Asp.net HTTP处理程序使用Cassini工作,但不使用IIS 6
我创建了一个示例项目来简化我的问题。我有一个简单的处理器:Asp.net HTTP处理程序使用Cassini工作,但不使用IIS 6,asp.net,iis-6,httphandler,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.
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; } }
}
然后,在我的配置中,我有:
<httpHandlers>
<add verb="*"
path="Survey"
type="HttpHandlerTest.HandleThis, HttpHandlerTest" />
我的管理员开火了
如果我将项目更改为使用IIS 6运行,它将不会启动(404)。
我尝试通过以下方式在IIS中手动添加处理程序:
-网站属性
-主目录
-配置
-添加(浏览到我的网站的.dll),扩展名:Survey,取消选中“验证文件是否存在”
我注意到IIS(非常有用)在我的分机前面添加了“.”,所以我用“b.Survey”点击了该站点;仍然是404
当然,在Cassini中的IIS 6?中添加一个处理程序是可能的,所有内容都通过您的开发服务器,即使您尝试在集成模式下使用服务器中的编程会引发异常
在IIS7中,如果在集成模式下运行应用程序,它将起作用
在IIS6中,您必须将path=“*”分配给ASPNET_ISAPI.dll,然后在web.config中使用与上述相同的引用代码,或者必须在路径中为处理程序分配扩展名
如果您在IIS6中添加aspnet isapi时遇到问题,请在谷歌上搜索“无扩展IIS6”或类似的内容以获得分步教程。“我尝试通过以下方式在IIS中手动添加处理程序:-网站属性-主目录-配置-添加(浏览到我网站的.dll),扩展名:Survey,取消选中验证文件是否存在”
听起来您使用了错误的“可执行”路径。可执行路径应指向aspnet isapi dll,而不是包含HttpHandler实现的dll
尝试使用.aspx扩展映射到的相同路径(通常是:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet\u isapi.dll)。我想我让人觉得我想要一个无扩展url的处理程序;我不。我只想让我的教练开枪。如果我在IIS的mappings/Application extensions对话框中键入“wtf”作为扩展名,并尝试点击“a.wtf”,它仍然不会启动。是的,好吧,我暗示的是web.config和asp.net isapi需要匹配,而您当前的解决方案没有这样做。不管怎么说,似乎其他人对你说得更好。当我这样做时,我得到的回答完全是空的。我认为你实际上没有被重定向到Score.aspx?您是否使用IIS中的通配符(*)映射导航到URL?我刚刚意识到我的问题;在我将可执行路径更改为指向aspnet之后,我需要更正配置中的内容(我在IIS中将扩展名更改为“.wtf”,因此我需要将配置更改为path=“*.wtf”