3

我们使用以下技术来捕获所有不存在的 URL 并提供我们自己的结果页面:

<handlers>
  <add name="Foo" path="foo.aspx" verb="*" type="Foo.UrlHandler" preCondition="integratedMode,runtimeVersionv2.0"/>
</handlers>

<httpErrors errorMode="Custom">
  <remove statusCode="404"/>
  <remove statusCode="405"/>
  <error statusCode="404" path="/foo.aspx" responseMode="ExecuteURL"/>
  <error statusCode="405" path="/foo.aspx" responseMode="ExecuteURL"/>
</httpErrors>

但是,当我检查哪些请求标头正在传递给 时UrlHandler,我只看到一个: If-Modified-Since 标头未通过。我看到了所有其他的(缓存控制、接受等)。

有这方面的经验吗?这有点与这个问题有关:

在 IIS7 中将表单发布到 404 + HttpHandler:为什么所有 POST 数据都丢失了?

更新:我并不孤单 - http://www.webmasterworld.com/microsoft_asp_net/3935439.htm

4

1 回答 1

1

解决了。如果有人遇到同样的问题:

我将项目更改为 .NET MVC(2,但 1-3 应该都可以)。制作了一条通吃的路线:

public static void RegisterRoutes(RouteCollection routes)
{
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
  routes.MapRoute("All", "{*url}", new { controller = "CatchAll", action = "Index" });
}

然后添加一个 CatchAll 控制器来完全按照我的 HttpHandler 曾经做的那样做。

于 2011-01-21T11:37:36.307 回答