我有一个ASP.NET MVC 2应用程序,它在global.asax中有一个Application_Error事件处理程序.在这里,我正在检测Exception类型是HttpException并且HTTP代码是404的情况,并重定向到我自己的404处理页面.
这在我的Cassini开发服务器上工作正常,但现在我正在尝试将其移动到具有IIS7的生产服务器(使用集成模式).
当我请求一个不存在的URL时,IIS7显示自己的404页面,据我所知,我的Application_Error方法永远不会被调用.
我该如何解决这个问题?
我有一个简单的方法,当使用ASP.NET 4.0路由与Web窗体生成一个将充当某种通配符的路由?
在我看来,在WebForms中,你必须为每个页面指定一个路由 - 我正在寻找某种通用路由,可以在没有特定需要的地方使用,也许直接从路径映射到路径所以......
http://somedomain.com/folder1/folder2/page可能会映射到folder1/folder2/page.aspx
有什么建议?
谢谢
我正在尝试将自定义错误页面添加到我的Web应用程序中.到目前为止,我已将此添加到我的web.config文件下的元素:
<customErrors mode="On" >
<error statusCode="404" redirect="~/404.aspx"/>
<error statusCode="500" redirect="~/500.aspx"/>
</customErrors>
Run Code Online (Sandbox Code Playgroud)
这适用于.NET触及的错误,例如包含.aspx扩展名的url.但是,我还希望为网址显示自定义错误,例如www.example.com/dasda
目前,当我请求上面的IIS 7.5这样的页面显示它自己的错误消息.我在元素下添加了这个:
<httpErrors >
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" path="~/404.aspx" responseMode="ExecuteURL" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" path="~/500.aspx" responseMode="ExecuteURL" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
我认为这会使IIS显示自定义错误页面而不是默认页面,但似乎并非如此.
我知道我可以在IIS中设置自定义错误页面,但对于我的情况来说,理想的解决方案是在web.config中配置它.
我曾尝试加入到这个在Page_Load事件我的自定义错误页的建议在这里:
Response.TrySkipIisCustomErrors = true;
Run Code Online (Sandbox Code Playgroud)
但是它并没有阻止默认的IIS页面显示代替我的自定义错误页面.我也试过这里建议的:
<httpErrors >
<remove statusCode="404" subStatusCode='-1' />
<error statusCode="404" path="~/404.aspx" prefixLanguageFilePath='' responseMode="Redirect" />
<remove statusCode="500" subStatusCode='-1' />
<error statusCode="500" path="~/500.aspx" prefixLanguageFilePath='' responseMode="Redirect" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
但这也没有奏效.
那么有没有办法通过配置web.config文件中的设置来阻止IIS显示默认错误页面?