在我的web.config
文件中,我指定了一些自定义错误:
<customErrors mode="RemoteOnly" defaultRedirect="~/Error">
<error statusCode="500" redirect="~/Error" />
<error statusCode="404" redirect="~/NotFound" />
</customErrors>
现在,某些链接(例如http://mysite.com/dsflhsdff
)会被正确地重定向到mysite.com/notfound
。但有些链接,如https://mysite.com/videoconference/0/0/0
由服务器本身处理 - 而不是我的自定义错误页面,我收到IIS错误页面(找不到文件或目录)。例如,此链接 - https://scyk.pl/forums/0/0/0
将产生正确的404错误(我的自定义错误页面)。
这里发生了什么?我是否需要手动设置IIS自定义错误?如果是这样,我该怎么做?
答案 0 :(得分:1)
这是因为ASP.NET甚至不知道有.htm页面的请求。 IIS将自行处理.htm页面,而根本不涉及ASP.NET。
您可以通过以下两种方式之一显示自定义页面:
让ASP.NET处理.htm页面:在IIS中右键单击您的网站/虚拟目录 - &gt;属性 - &gt;主目录/虚拟目录选项卡 - &gt; “应用程序设置”部分下的“配置”按钮 - &gt;添加映射。 设置IIS的自定义错误页面:在IIS中右键单击您的网站/虚拟目录 - &gt;属性 - &gt;自定义错误标签 - &gt;将404错误设置为错误页面的页面。
答案 1 :(得分:1)
您还可以在 Application_Error 方法
中的Global.asax文件中处理此错误e.g。
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
Exception exc = Server.GetLastError();
// Handle HTTP errors
if (exc.GetType() == typeof(HttpException))
{
// The Complete Error Handling Example generates
// some errors using URLs with "NoCatch" in them;
// ignore these here to simulate what would happen
// if a global.asax handler were not implemented.
/*if (exc.Message.Contains("NoCatch") || exc.Message.Contains("maxUrlLength"))
return;*/
//Redirect HTTP errors to HttpError page
/*Server.Transfer("HttpErrorPage.aspx");*/
}
}
答案 2 :(得分:0)
如果页面调用未通过asp.net引擎,那么IIS将处理。
您可以执行此操作setup very easy if you have direct access to the iis,但IIS允许您直接从站点的web.config设置此自定义错误。以下是404错误的示例:
<system.webServer>
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/PageNotFound.aspx" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
更多信息:http://www.iis.net/configreference/system.webserver/httperrors
答案 3 :(得分:0)
这种情况正在发生,因为IIS在某些情况下无法找到您的自定义错误页面。我遇到了某些扩展,但通过在IIS管理器的错误页面部分配置我的自定义错误页面,我每次都能够点击我的自定义错误页面。
Heres怎么做:
进入您的IIS管理器并选择相关网站,找到标题为“错误页面”的图标。在IIS部分下。
双击该图标后,您将看到一个状态代码列表以及负责传递错误的相应文件。
找到错误代码,在您的情况下为404(如果它不存在,您可以通过单击&#39;添加...&#39;)从右侧菜单添加它,然后单击&# 39;编辑...&#39;右侧菜单中的按钮。
接下来,点击“在此网站上执行网址”的单选按钮&#39;在您出现的对话框中。您可以在此处提供用户将重定向到的相对URL。
在“编辑”对话框中完成选项后,您将需要再次在主页错误页面中选择您的页面,这次只需点击“编辑功能设置...”即可。
在您看到的编辑错误页面设置中,确保针对远程请求的本地请求和自定义错误页面的详细错误&#39;被选中。还要确保在“编辑错误页面”对话框的“默认页面”部分的“路径”字段中输入您在上一个“编辑”菜单中输入的页面。最后,路径类型必须设置为&#39;执行网址