我有一个实现IHttpHandler
和的类IRouteHandler
:
public class CustomHandler : IHttpHandler,IRouteHandler
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.AddHeader("Content-Type", "text/plain");
context.Response.Write("Hello World");
}
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return this;
}
}
在 Application_Start 方法中,我尝试使用路由注册我的处理程序:
Route route = new Route("dav/{*Pathinfo}", new CustomHandler());
RouteTable.Routes.Add(route);
一切都很酷,直到我用这种 URL 调用:
- http://localhost:63428/dav/asdadsa
- http://localhost:63428/dav/asdadsa/asdasd
- http://localhost:63428/dav/asdadsa/a%20%20sdasd
(在 url 中有空格)
但是如果我尝试使用 theese:
- http://localhost:63428/dav/asdadsa.docx
-http://localhost:63428/dav/asdads/a.docx
我的处理程序没有被调用并且服务器返回 404。我认为通配符将匹配每个 url以 .开头dav/
。
知道如何使带有扩展名的网址也与我的路线匹配吗?
更新:
我找到了这个页面。
它是从配置中设置的,而不是从后面的代码中设置的,但不必设置 runAllManagedModulesForAllRequests 设置,不幸的是,在我的原始示例中,路由值没有那么干净。
如果来这个问题寻求答案,也许有人会感兴趣。