HTTP Handler使用Cassini,但不适用于IIS 6

dud*_*er4 6 asp.net iis-6 httphandler

我已经创建了一个示例项目来简化我的问题.我有这个简单的处理程序:

public class HandleThis : IHttpHandler, IRequiresSessionState
{

    public void ProcessRequest( System.Web.HttpContext context )
    {
        // Score.aspx just says "success"
        context.Response.Redirect( "Score.aspx" );
    }

    public bool IsReusable { get { return true; } }
}
Run Code Online (Sandbox Code Playgroud)

然后,在我的配置中,我有这个:

<httpHandlers>
<add verb="*"
path="Survey"
type="HttpHandlerTest.HandleThis, HttpHandlerTest" />
Run Code Online (Sandbox Code Playgroud)

现在,当我点击http:// server/Survey我的处理程序触发时.

如果我将项目更改为使用IIS 6运行,则不会触发(404).我尝试通过以下方式在IIS中手动添加处理程序: - 网站属性 - 主目录 - 配置 - 添加(浏览到我的网站的.dll),扩展:调查,取消选中"验证文件是否存在"

我注意到IIS(如此有用)添加了"." 在我的扩展面前,所以我用"b.Survey"点击了网站; 仍然是404.

当然可以在IIS 6中添加处理程序吗?

小智 6

"我尝试通过以下方式在IIS中手动添加处理程序: - 网站属性 - 主目录 - 配置 - 添加(浏览到我的网站的.dll),扩展:调查,取消选中验证文件是否存在"

听起来你正在使用错误的"可执行"路径.可执行路径应指向aspnet isapi dll,而不是包含HttpHandler实现的dll.

尝试使用.aspx扩展名映射到的相同路径(通常是:c:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll).