我试图访问Asp.Net ashx处理程序中的Session变量,如下所示.
public void ProcessRequest (HttpContext context) {
context.Session["VariableName"] = Id;
}
Run Code Online (Sandbox Code Playgroud)
但是context.Session在上面的方法中总是空的.如何访问ashx文件中的Session对象?
我有一个HttpHandler返回一个图像Response.OutputStream.我有以下代码:
_imageProvider.GetImage().CopyTo(context.Response.OutputStream);
Run Code Online (Sandbox Code Playgroud)
GetImage()方法返回一个Stream实际上是MemoryStream实例的实例,它返回0个字节到浏览器.如果我更改GetImage()方法签名以返回a MemoryStream并使用以下代码行:
_imageProvider.GetImage().WriteTo(context.Response.OutputStream);
Run Code Online (Sandbox Code Playgroud)
它工作,浏览器获取图像.那么在MemoryStream类中WriteTo和CopyTo之间的区别是什么,以及Stream在GetImage()方法签名中使用class 的推荐方法是什么.
我有一个HttpHandler,它根据查询字符串调整图像大小,所以请求类似于:
将为您提供320x240的重新调整大小的图像.
在IIS Manager下面Handler Mappings,我将处理程序的路径映射为*.jpg,*.gif,*.bmp,*.png.但是,这不会激活处理程序.如果我把它改成只是*.jpg,那就行了.
我的问题是,我是否必须创建4个单独的映射条目,每个映像类型一个,或者是否有某种方法可以在一个路径中组合多个扩展?
同步HTTP处理程序和异步HTTP处理程序之间是否存在性能差异?IHttpHandler vs IHttpAsyncHandler
为什么选择另一个?
有什么好处?
所述的HttpRequest类定义了两个属性:
获取客户端使用的HTTP数据传输方法(如GET,POST或HEAD).
Run Code Online (Sandbox Code Playgroud)public string HttpMethod { get; }客户端使用的HTTP数据传输方法.
获取或设置客户端使用的HTTP数据传输方法(GET或POST).
Run Code Online (Sandbox Code Playgroud)public string RequestType { get; set; }表示客户端发送的HTTP调用类型的字符串.
这两个属性有什么区别?我什么时候想要使用另一个?哪个是检查以查看客户端使用的数据传输方法的正确方法?
文档表明HttpMethod将返回使用的动词:
例如GET,POST或HEAD
而RequestType上的文档似乎只表示两个可能值中的一个:
GET或POST
我使用动词的随机抽样进行测试,这两个属性似乎都支持所有动词,并且都返回相同的值:
测试:
Client Used HttpMethod RequestType
GET GET GET
POST POST POST
HEAD HEAD HEAD
CONNECT CONNECT CONNECT
MKCOL MKCOL MKCOL
PUT PUT PUT
FOOTEST FOOTEST FOOTEST
Run Code Online (Sandbox Code Playgroud)
有什么区别:
什么时候应该使用另一个?
所以我一直在尝试将http模块映射到MVC3站点的子路径.它应该很简单,因为我理解它,但它没有工作.模块设置如下:
<handlers>
<add name="Nancy" path="api/*" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" allowPathInfo="true" />
</handlers>
Run Code Online (Sandbox Code Playgroud)
iis6也有匹配部分,所以我可以在webdev.webserver下运行它.然而,测试部署到我的本地iis7(在Win7下)和webdev.webserver,只有/ api实际上调用处理程序.如果我调用/ api/{anything}它只返回404.
我确定我只是"做错了(tm)",但任何帮助都会受到赞赏.
注意:我还尝试了其他一些配置,包括使用标记和创建/ api文件夹,并使用完整的通配符将web.config添加到该文件夹.
第二个不能保存对会话变量的更改的区别IRequiresSessionState和IReadOnlySessionState旁边有什么区别?
两者都为我提供了访问我的会话变量的能力HttpHandler.但为什么我更喜欢IReadOnlySessionState?它只是限制我保存下一个请求的会话.
或者它是否给我带来了性能优势IRequiresSessionState?
什么时候我宁愿用IReadOnlySessionState了IRequiresSessionState?
我的ASP.NET MVC应用程序中需要一个图像生成器,但我不知道是否可以在ASP.NET MVC中使用ASHX.
如果有一个类似于继承IViewDataContainer的IHttpHandler类,那么我可以在我的ASHX上使用ViewData.Model.
我阅读了一篇关于它的博客文章,但它似乎已经过时了我在ASP.NET论坛中获得的信息
有任何想法吗?
在某些.NET驱动的站点上,URL不以asp.net页面名称结尾,例如default.aspx,而是使用模式http://sitename.com或http://sitename.com/subdirectory/subdirectory.该站点被映射为根目录下的子目录,即./ tags,/ users,/ badges,URL分别是/ tags,/ users,/ badges.
Stack Overflow,使用一个特定的例子,使用表单的问题URL 如何获得像Stackoverflow这样的干净URL?.这是优化搜索引擎页面的好方法.
这是使用HTTP处理程序实现的吗?GET请求是否根据路径进行过滤,整个响应是根据问题ID在处理程序本身中形成的?还有其他人在乎推测吗?
我一直在研究这个但是没有得到答案 - 有没有办法以编程方式将HttpHandler添加到ASP.NET网站而不添加到web.config?
httphandler ×10
asp.net ×7
.net ×3
c# ×3
iis ×2
iis-7 ×2
architecture ×1
ashx ×1
asp.net-mvc ×1
asynchronous ×1
http ×1
httprequest ×1
memorystream ×1
nancy ×1
session ×1
stream ×1
synchronous ×1
url-routing ×1