2012-06-07 64 views
1

我现在面临一个问题: 我做想做的事网址与ASP.Net404处理 - 本地ASP.Net(C#4)和远程服务器(活)之间的差异

改写

它完美使用我的本地设置,但一旦在服务器上无法按预期工作。

本地

请求/unavailable-file.aspx在的Application_Error(Global.asax.cs中)变得好,然后被重定向到/404.aspx 请求/不可用的随机文件夹或任何其他文件中的的Application_Error(Global.asax.cs中)变得好,然后被重定向到/404.aspx

远程 到.aspx文件的任何请求都在的Application_Error 每隔被获取请求(.jpg,文件夹等)不会是猫高等教育委员会在所有扔进默认的404页面错误

我的问题:

昨天我安装我的新网站的服务器和我看到的Application_BeginRequest甚至没有解雇我所有的服务器上,当它是每次(对于请求的每个文件或文件夹)在本地计算机上(使用visual studio)。 我不得不创建一个HttpModule,现在我成功地获得了事件触发... 但不是非.aspx请求。

一切似乎都绑定在URL上:当它以.aspx结尾时,它被正确地管理,当它没有时,它根本就不被管理。

即使对于非aspx页面,我该如何捕获每个Application_BeginRequest?

我有我的web.config中尝试将404错误强行进入我的页面:

<customErrors mode="On" 
    defaultRedirect="404.aspx"> 
    <error statusCode="404" redirect="404.aspx"/> 
</customErrors> 

但正如我所说的,只要它不具有的.aspx它没有被重定向结束的请求我得到了默认的ASP.Net 404错误。

(我的主机是“reliablesite”如果它可以帮助,我有404错误指着我404.aspx页面管理器(共享托管)里面的设置,它不会改变任何东西)

我希望一切都能像本地模式一样工作。

如果您对如何解决该问题有任何建议,请告诉我。

回答

0

,当你有一个共享的环境中,该问题的解决方案在这里给出:

  1. 活动的ASP。网综合管线在共享环境设置(可用,因为IIS 7的事情)
  2. 这个添加到Web.config:

    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
        <add name="RedirectHttpModule" type="RedirectHttpModule" /> 
    </modules> 
    </system.webServer> 
    

凡RedirectHttpModule是一个自定义模块处理的Application_BeginRequest例如。

“runAllManagedModulesForAllRequests”表示将为所有对Web应用程序的请求调用所有托管模块。

1

在开发Web服务器中,每个请求都由aspx引擎处理,因为这是全部。在实时服务器中,不同的文件类型由不同的引擎处理。

为了让实时服务器为每个请求使用aspx引擎,必须在IIS中更改网站的配置。

相关:ASP.net web.config doesn't catch all 404's

+0

谢谢。这就是原因......现在我可能不得不写一个模块,就像在这个链接上解释的一样:http://learn.iis.net/page.aspx/508/wildcard-script-mapping-and-iis-集成流水线/ –

相关问题