0

我的应用程序有一个用于处理友好 URL 的自定义 HTTPModule。这是 web.config 文件的模块部分。

<modules>
<remove name="ScriptModule"/>
<remove name="Session"/>
<add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition=""/>
<add name="NHibernateSessionModule" type="MyApp.Core.NHibernateBase.NHibernateSessionModule"/>
<add name="ApplicationModule" type="MyApp.ApplicationModule"/>
<add name="URLDispatcher" type="MyApp.URLDispatcher"/>
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</modules>

该模块还具有处理错误页面的逻辑。我现在遇到的问题是,当请求的 url 以 '.' 结尾时 发送到服务器,我的模块都没有被触发,用户看到默认的 asp.net 404 页面。

不确定发生了什么以及如何将用户重定向到我的自定义 404 页面。

我确实找到了与此相关的另一个问题,提供的解决方案是使用 web.config 文件中的 .Net 4 特定配置标签之一。目前我无法迁移到 .Net 4。所以,我正在寻找不同的解决方案。有什么建议么?

4

1 回答 1

0

我猜您正在使用 http 重定向来获取友好的 url。

如果应用程序在 IIS7 下,请检查您是否安装了以下功能:

控制面板 --> 程序 --> 关闭 windows 功能 --> 万维网服务 --> 通用 HTTP 功能 --> HTTP 重定向

然后你需要配置你的自定义 http 模块,不仅在

<system.web>
    <httpModules>
        <add name="CustomModule" type="NameSpace.ClassName, AssemblyName" />
    </httpModules>
</system.web>

但也在

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <add name="CustomHttpModule" type="NameSpace.ClassName" />
    </modules>
</system.webServer>
于 2012-08-09T01:59:11.817 回答