【发布时间】:2018-09-19 10:12:44
【问题描述】:
我有一个处理程序,我想处理所有流量,包括文件等。
但只要 URL 与物理文件的位置匹配,例如“someFile/test.cshtml”,它就会忽略我的处理程序和 BeginProcessRequest,在这种情况下,甚至会以某种方式使用 RazorEngine 呈现 cshtml?
但是如何防止这种行为并确保所有请求都由我的处理程序处理?
这是我的整个 web.Config
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<httpHandlers>
<clear />
<add verb="*" type="SimpleWebServer.HttpHandler" path="*"/>
</httpHandlers>
</system.web>
<system.webServer>
<handlers>
<clear />
<add name="CatchAll" verb="*" type="SimpleWebServer.HttpHandler" path="*" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
<modules runAllManagedModulesForAllRequests="true"/>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
</configuration>
还有我的 Http 处理程序:
namespace SimpleWebServer
{
public class HttpHandler : IHttpAsyncHandler
{
...
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback callback, Object extraData)
{
return AsyncResult.GetAsyncResult(context, callback);
}
...
}
}
【问题讨论】:
-
使用失败的请求跟踪来查看处理这些 URL 的处理程序。只有这样你才能看到是否可以找到解决方案。
-
请求不会失败。我的处理程序没有处理它。但我会检查一下,谢谢!
-
您已将此标记为 asp.net-mvc,因此假设该项目已安装了它的各个方面。查看您的创业公司或 global.asax。还要检查应用程序是否没有从 IIS 继承配置。
-
@BjarkeCK 失败的请求追踪也可以追踪成功的请求。
-
您是在经典模式下运行还是在集成模式下运行?
标签: asp.net .net iis iis-express