2011-10-11 63 views
3

我在IIS 7上本地运行的Asp.Net 4中有一个Web应用程序。 我需要显示一个自定义页面(404)和一个500来代替IIS的默认页面。 Web.Config中使用此httpErrors配置示例<httpErrors>

<system.webServer> 
    <httpErrors> 

我的网站是在

C:\inetpub\wwwroot\mysite\ 

我的自定义错误页:

C:\inetpub\wwwroot\mysite\ErrorPages\404.htm 
C:\inetpub\wwwroot\mysite\ErrorPages\505.htm 

我不明白它是如何工作的。请给我一个代码示例吗?

感谢

回答

11

我解决了我的问题无线这个。

<httpErrors errorMode="Custom"> 
    <remove statusCode="404" subStatusCode='-1' /> 
    <remove statusCode="500" subStatusCode='-1' /> 
    <error statusCode="404" path="/404.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL" /> 
    <error statusCode="500" path="/500.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL" /> 
    </httpErrors> 

这需要在Web.config去,下<configuration>><system.webServer>

例如

<configuration> 
    <system.webServer> 
     <httpErrors ...> 
      // define errors in here ... 
     </httpErrors> 
    </system.webServer> 
</configuration> 
+1

您可以省略'prefixLanguageFilePath =“”'。 – Oliver

+0

感谢分享! +1 – GibboK

+1

建议:包含父元素,以便读者可以在' Myster

5

下面是一个例子,希望它能帮助提意见

<system.web> 
<customErrors mode="RemoteOnly" defaultRedirect="default.aspx"> 
<error statusCode="404" redirect="~/ErrorPages/404.htm"/> 
<error statusCode="500" redirect="~/ErrorPages/505.htm"/> 
</customErrors> 
</system.web> 

编辑:这是我认为的例子,你需要

<configuration> 
    <system.webServer> 
     <httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="File" > 
     <remove statusCode="500" /> 
     <error statusCode="500" 
      prefixLanguageFilePath="C:\Contoso\Content\errors" 
      path="500.htm" /> 
     </httpErrors> 
    </system.webServer> 
</configuration> 

http://www.iis.net/ConfigReference/system.webServer/httpErrors/error

+0

感谢,这是工作asp.net,但我的服务器上,我需要即使静态内容 – GibboK

+0

对不起的配置,我不明白。你能解释一下吗? –

+0

为我的理解您的代码工作,如果我需要一个不存在的页面(扩展名为.aspx)例如:foo.aspx其中foo.aspx在服务器上不存在。我需要改用 ....你有任何例子吗? – GibboK