自定义错误页面未显示在网站上,但在 Visual Studio 中运行时会显示



我正在我的GoDaddy服务器上设置一个用户接受站点。我已经阅读了一堆帖子并做了多件事,但似乎没有任何效果。在Visual Studio中开发并运行项目时,一切正常。在实时服务器上,我没有收到自定义错误页面。它运行的是 IIS 7。

我尝试在web.config中使用httpErrors和CustomErrors使用不同的组合。单独使用两者和每个。我读过,如果你有II7,使用httpErrors会更好。下面是两个代码区域。我正在使用一个 ID 来获取代码和一个页面来提取所有错误。我也想对此有一些想法。虽然其他文档说您应该使用静态页面来处理错误,但使用剃刀页面对我来说似乎是一个奇怪的想法,因为您必须在项目之外创建页面,然后将其添加到其中。

最初我将这些设置作为错误索引,但更改了它,因为我认为这可能是问题所在。事实证明不是..

<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1"/>
<error statusCode="404" path="Error/Index/404" responseMode="ExecuteURL"/>
<error statusCode="500" path="Error/Index/500" responseMode="ExecuteURL"/>
</httpErrors>

<customErrors mode="On" defaultRedirect="~/Error/Oops">
<error statusCode="404" redirect="~/Error/Oops/404"/>
<error statusCode="500" redirect="~/Error/Oops/500"/>
</customErrors>

控制器很简单

public ActionResult Oops(int id)
{
Response.StatusCode = id;
return View();
}

我还要指出,错误的URL链接是正确的。即使我直接转到自定义错误页面 Url,我也会收到 404 页面,但没有自定义页面。对我来说,如果你有一个控制器正在提供视图,并且你给它它所需的信息,它应该会出现。

编辑-

另外,当我使用httpErrors时,我在页面上得到这个 - 无法显示该页面,因为发生了内部服务器错误。

服务器上是否有需要打开或关闭的内容?

做了一些挖掘,发现了更详细的文档。这是解决我的问题的方法。

<httpErrors errorMode="Custom" defaultResponseMode ="ExecuteURL" existingResponse="Replace">
<remove statusCode="404"/>
<error statusCode="404" path="/Error/Oops/404" responseMode="ExecuteURL"/>
<remove statusCode="500"/>
<error statusCode="500" path="/Error/Oops/500" responseMode="ExecuteURL"/>
</httpErrors>

我同时使用httpErrors和customErrors。没有对自定义错误进行任何更改。

最新更新