.net 中ashx处理接口 ihttphandler是否java 线程安全全

当前位置:&>&&>&
asp.net中的*.ashx类型的文件使用方法简单
发布时间:编辑:sunday01
当想创建一个ASP.NET文件,不是aspx文件,可以动态的返回一个图片、XML文件或其他非HTML文件等,此时你可能需要用到ashx文件了。
当想创建一个ASP.NET文件,不是aspx文件,可以动态的返回一个图片、XML文件或其他非HTML文件等,此时你可能需要用到ashx文件了。
1、使用ASHX handlers
使用ASHX文件的目标,是要在一个地址中用ASHX文件并动态的返回内容。
将用到querystring,最后的地址格式为(例子):
/?file=name
开始:通过以下的步骤可以添加一个新的ashx文件:打开你的ASP.NET web site;右击项目选择&Add New Item...&;将显示一个&Add New Item&的,选择&Generic Handler&。此时,你就
会得到一个新的ashx文件。
2、自动生成代码
注意,在ashx文件中自动生成的代码。它定义了IHttpHandler接口的两部分。非常重要的一部分是ProcessRequest(),它将决定这个ashx文件是被请求还是被显示。你不能修改这个继承的接口或删除它的方法。
3、映射handler
映射一个older URL或一个路径到你的新ashx文件通常是可取的。为了向后兼容和优化搜索引擎,你获取希望这个handler能接管一个old URL。如何来实现呢?用urlMappings;
复制代码 代码示例:
&system.web&
&urlMappings enabled=&true&&
&add url=&~/Default.aspx& mappedUrl=&~/Handler.ashx&/&
&/urlMappings&
URL mappings:上面的web.config配置将自动连接一个URL到另一个URL。现在,当Default.aspx被请求时,你的ashx文件将接管。这个意思就是说,你能映射Default.aspx到你的handler。
4、添加一个图片
找一个你喜欢的图片。把它添加到你的网站项目中。例如,我选择了一个图片&Flower1.png&。下面,我们将在ashx文件中用到这个图片。
5、修改ashx文件
你的ashx文件中有两部分,必须修改ProcessRequest()方法。我们能改变这个文件的ContentType和Response内容。
按照下面的方法修改你的ashx文件。
~~~ ASHX code-behind file (C#) ~~~
复制代码 代码示例:
using System.W
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
// Comment out these lines first:
// context.Response.ContentType = &text/plain&;
// context.Response.Write(&Hello World&);
context.Response.ContentType = &image/png&;
context.Response.WriteFile(&~/Flower1.png&);
public bool IsReusable {
本文标题:
本页链接:
12345678910如何生成基于httpHandler的ashx文件接口_百度知道
如何生成基于httpHandler的ashx文件接口
如何生成基于httpHandler的ashx文件接口
求具体步骤
提问者采纳
/namespace TestHandler {
public class TestHandler ,则返回]。有关详细信息; }
public void ProcessRequest(HttpContext context)
get {&#47,然后才能进行使用.com/: IHttpHandler
/ 并向 IIS 注册此处理程序.type = contextusing System.config 文件中配置此处理程序;summary&
public bool IsReusable
// 您将需要在您网站的
/summary&gt.Request[&quot。
//&#47.microsoft?linkid=8101007
其他类似问题
ashx的相关知识
其他1条回答
直接新建一个一般处理过程的页面不就可以了么 ~~ 就自动是实现了
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁2225人阅读
利用ASP.NET开发网站,比较多使用的是ASPX文件,很少使用ASHX文件,但ASHX在有些方面还是蛮实用的,如图片防盗链、验证码、AJAX读数据等,而且速度也快点,省去了Page类生命周期这些步骤。ASHX有个IsReusable属性,很多人对此有疑惑,以下为你详细解答:
IsResuable属性指示是否可以重用于其他IHttpHandler实例,那么什么时候可以设置为true,什么时候不能呢,如果可以设置为true,性能可以得到大大的提升,但必须保证线程安全。
那么什么叫线程安全呢?
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。
线程安全问题都是由全局变量及静态变量引起的。
若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:507319次
积分:11222
积分:11222
排名:第424名
原创:516篇
转载:219篇
评论:90条
(8)(6)(5)(15)(7)(3)(4)(8)(5)(4)(13)(18)(6)(7)(16)(19)(26)(21)(13)(13)(11)(21)(9)(4)(9)(17)(12)(9)(4)(6)(11)(14)(16)(10)(9)(12)(31)(22)(30)(10)(18)(37)(21)(10)(31)(32)(19)(3)(1)(5)(13)(31)(11)(8)(11)其他回答(6)
頁面的那個方法 ,應該用 js ,PageMethods。GetUserName1()調用
园豆:3739
园豆:3739
园豆:3739
ashx,我一直用这个做ajax
推荐阅读:
园豆:31909
ashx是一般处理程序,它和aspx一样都实现了IHttpHandler接口。
但是ashx的效率却比aspx高的多,它是asp.net中执行效率最高的处理程序。
一般简单的返回数据,或者生成验证码都用ashx。
收获园豆:15
我个人一般用ashx
用ashx还不如用asmx,用aspx静态方法也是有好处的,比如针对这个页面的各种ajax而非通用的
&&&您需要以后才能回答,未注册用户请先。在SharePoint
解决方案中添加 ashx (HttpHandler) - 推酷
在SharePoint
解决方案中添加 ashx (HttpHandler)
本文讲述如何在 在SharePoint
解决方案中添加 ashx (HttpHandler)。
一般处理程序(HttpHandler)是&NET众多web组件的一种,ashx是其扩展名。一个httpHandler接受并处理一个http请求,类比于Java中的servlet。类比于在Java中需要继承HttpServlet类,在.net中需要实现IHttpHandler接口,这个接口有一个IsReusable成员,一个待实现的方法ProcessRequest(HttpContextctx) 。程序在processRequest方法中处理接受到的Http请求。成员IsReusable指定此IhttpHnadler的实例是否可以被用来处理多个请求。
.ashx程序适合产生供浏览器处理的、不需要回发处理的数据格式,例如用于生成动态图片、动态文本等内容。
下面笔者将介绍如何在SharePoint
解决方案中添加 ashx (HttpHandler):
1. 新建一个场解决方案
2. 映射 SharePoint 的Layout文件夹
3. 添加新项目
4. 选择Application page
5. 将Test.ashx的代码修改为
SharePoint 2013 (
注意替换class name
&%@ Assembly Name=&$SharePoint.Project.AssemblyFullName$& %&
&%@ Assembly Name=&Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c& %&
&%@ WebHandler Language=&C#& Class=&Testashx.Test& %&
SharePoint 2010(
注意替换class name
&%@ Assembly Name=&$SharePoint.Project.AssemblyFullName$& %&
&%@ Assembly Name=&Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c& %&
&%@ WebHandler Language=&C#& Class=&Testashx.Test& %&
6. &Test.ashx.cs
using Microsoft.ShareP
using Microsoft.SharePoint.WebC
using System.W
namespace Testashx
public partial class Test : IHttpHandler
public bool IsReusable
public void ProcessRequest(HttpContext context)
System.Web.Script.Serialization.JavaScriptSerializer jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
context.Response.ContentType = &application/json&;
var jsonResult = jsonSerializer.Serialize(new JosnResult (){Name=&Abraham Cheng&, Age= 29 });// return what you want
context.Response.Write(jsonResult);
class JosnResult
string Name {}
public int Age {}
7. UnLoad 项目,编辑项目工程文件,在PropertyGroup节点中插入:
&TokenReplacementFileExtensions&ashx&/TokenReplacementFileExtensions&
8. Reload项目, 部署解决方案&
& & &a. SharePoint 2013 &验证地址为 .../_layouts/15/xxx/Text.ashx
& & b. SharePoint 2010&验证地址为 .../_layouts/xxx/Text.ashx
& & 打开以上地址就可以返回一个Json对象了
在实际应用可以用Ajax来请求Text.ashx来获取数据,展现在前台,达到不用刷新页面更新数据的目的。
& & & & & &
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见

我要回帖

更多关于 c queue 线程安全 的文章

 

随机推荐