我有以下模块
public class LowerCaseRequest : IHttpModule {
public void Init(HttpApplication context) {
context.BeginRequest += new EventHandler(this.OnBeginRequest);
}
public void Dispose() { }
public void OnBeginRequest(Object s, EventArgs e) {
HttpApplication app = (HttpApplication)s;
if (app.Context.Request.Url.ToString().ToLower().EndsWith(".aspx")) {
if (app.Context.Request.Url.ToString() != app.Context.Request.Url.ToString().ToLower()) {
HttpResponse response = app.Context.Response;
response.StatusCode = (int)HttpStatusCode.MovedPermanently;
response.Status = "301 Moved Permanently";
response.RedirectLocation = app.Context.Request.Url.ToString().ToLower();
response.SuppressContent = true;
response.End();
}
if (!app.Context.Request.Url.ToString().StartsWith(@"http://zeeprico.com")) {
HttpResponse response = app.Context.Response;
response.StatusCode = (int)HttpStatusCode.MovedPermanently;
response.Status = "301 Moved Permanently";
response.RedirectLocation = app.Context.Request.Url.ToString().ToLower().Replace(@"http://zeeprico.com", @"http://www.zeeprico.com"); …Run Code Online (Sandbox Code Playgroud) 我正在编写一个高性能的ASP.NET Json API,很快就会有> 1000个请求/秒.我的所有逻辑和处理都是在IHttpHandler中完成的.我通过秒表类测量,处理程序在大约0,1 - 0,5毫秒内完成一个请求.
但似乎IIS和/或其他HTTPHandlers(模块?)正在带走很多性能.我能以某种方式衡量吗?在配置为获得最佳性能时,IIS中的请求会产生多少开销?
将删除所有这些HTTPHandler帮助,还是有其他技巧来加快它?除了Session之外,我不需要太多的ASP.NET功能集(如果能够显着提升性能,甚至可以解决这个问题).
在IIS 7上,我正在尝试将自定义HttpHandler用于我的ASP.NET Web应用程序.我使用管道模式"经典",.NET版本是4.0.30319,我的处理程序的web.config配置是:
<system.webServer>
<handlers>
<add name="MyHandler" path="*.myExtension" verb="*" type="Company.App.UI.Controls.MyHandler, Company.App.UI" resourceType="Unspecified" />
</handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
当我调用此处理程序时,我收到此错误:
HTTP Error 500.21 - Internal Server Error
Handler "MyHandler" has a bad module "ManagedPipelineHandler" in its module list
Run Code Online (Sandbox Code Playgroud)
我做了谷歌搜索时,大多数人通过重新注册ASP.NET通过ASPNET_REGIIS.EXE/i命令解决这个问题,但这不是为我工作(在命令完成后,我重新启动IIS,但同样的错误).我在两台不同的服务器上尝试过,但结果相同.
我还应该尝试什么?谢谢
我目前基于Asp .net的项目大量使用Http处理程序来处理各种请求?那么,有什么办法可以使用单元测试用例来测试每个处理程序的功能吗?我们正在使用Nunit和Moq框架来促进单元测试.
System.Web.HttpException: Path 'OPTIONS' is forbidden.自从我们将网站迁移到新的服务器设置后,我收到了错误.我无法重新创建错误,但我每天至少收到几次此类例外的电子邮件.什么可能导致这个以及我如何解决它?
编辑:堆栈跟踪:
at System.Web.HttpMethodNotAllowedHandler.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Run Code Online (Sandbox Code Playgroud)
没有名为OPTIONS的目录或文件,我相信所有权限都是正确的.我找到了一些关于EXCEL从网络服务器获取数据的可能链接的信息,但没有完整的解释如何或正在发生的事情.
再次编辑:似乎这与在Internet Explorer中打开的Excel文件有关..
我写了一个httphandler来处理所有XSLT请求.
处理程序的名称是XSLTHandler.cs.
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpHandlers>
<add verb="*" path="*.xsl" type="XSLTHandler" />
</httpHandlers>
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息,不知道如何解决它.
配置错误说明:处理为此请求提供服务所需的配置文件时发生错误.请查看下面的具体错误详细信息并相应地修改配置文件.
分析器错误消息:无法加载类型'XSLTHandler'.
我希望能够创建一个简单的PNG图像,比如使用基于ac#web的服务生成图像的红色方块,从<img src="myws.ashx?x=100>HTML元素调用.
一些示例HTML:
<hmtl><body>
<img src="http://mysite.com/webservice/rectangle.ashx?size=100">
</body></html>
Run Code Online (Sandbox Code Playgroud)
是否有人可以拼凑一个简单的(工作)C#课程来让我入门?一旦关闭和离开,我确信我可以完成这个以实际做我想要它做的事情.
TIA
解
rectangle.html
<html>
<head></head>
<body>
<img src="rectangle.ashx" height="100" width="200">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
rectangle.ashx
<%@ WebHandler Language="C#" Class="ImageHandler" %>
Run Code Online (Sandbox Code Playgroud)
rectangle.cs
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Web;
public class ImageHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
int width = 600; //int.Parse(context.Request.QueryString["width"]);
int height = 400; //int.Parse(context.Request.QueryString["height"]);
Bitmap bitmap = new Bitmap(width,height);
Graphics g = Graphics.FromImage( (Image) bitmap );
g.FillRectangle( Brushes.Red, 0f, 0f, bitmap.Width, …Run Code Online (Sandbox Code Playgroud) 是否可以禁用HttpHandlers的请求验证?
一点背景 - 我有一个使用HttpHandler的ASP.NET Web应用程序来接收来自WorldPay的付款响应.IIS日志显示正在从WorldPay正确调用处理程序,但从不调用处理程序内的代码.
如果我创建一个物理ASPX页面并在标头中设置ValidateRequest = false,并在Page_Load方法中放入相同的代码,则会毫无问题地调用代码.
这解决了这个问题,虽然我更喜欢坚持使用HttpHandler,因为它更适合这种类型的功能,而不是拥有一个空的ASPX页面,尽管这取决于能否禁用请求验证.
Web应用程序使用的是ASP.NET 2.0,服务器是IIS6.
有没有办法可以动态注册IHttpHandlerC#代码,而不必手动将其添加到system.web/httpHandlersweb.config中的部分.
这可能听起来很疯狂,但我有充分的理由这样做.我正在构建一个WidgetLibrary,网站所有者只需将.dll文件放入他们的bin目录就可以使用,并希望以最少的配置支持web.config.
任何人都可以告诉我,当我们在web.config中注册自定义HTTPHander时,如下所示
<add verb="*" path="SampleHandler.new"
type="SampleHandler, SampleHandlerAssembly" />
Run Code Online (Sandbox Code Playgroud)
在这里verb ="*"的含义是什么?它的用途是什么?
httphandler ×10
asp.net ×9
c# ×3
ihttphandler ×3
web-config ×2
asp.net-2.0 ×1
exception ×1
http ×1
httpmodule ×1
iis ×1
iis-7 ×1
image ×1
performance ×1
png ×1
request ×1
scalability ×1
unit-testing ×1
validation ×1
web-services ×1