我们正在将现有网站从IIS6迁移到IIS7,但在设置404错误页面时遇到了一些困难.我们的404-errorpage是这样的:
有了IIS6,这就像宣传的一样,但是在IIS7中,有些东西已经改变了.当IIS7遇到定义了errorpage的状态码时,它将始终显示已配置的错误.如果我们的静态错误与404状态代码,这意味着IIS7将再次执行自定义ASP页面.这导致无限重定向.
我们发现通过在Web.Config中添加设置可以避免这种行为
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
但是,添加此项后,我们的自定义ASP页面拒绝重定向.在与Fiddler核实之后,似乎IIS7强制404状态代码,覆盖我们的302重定向.
谁能推荐另一种方法来解决我们的问题?
error-handling iis-7 custom-error-pages asp-classic http-status-code-404
我的网站上有一个自定义404错误页面,但在网站上做其他事情时,错误页面很难弄清楚我丢失的文件问题是什么,因为它重定向到给定的html或php文件并获取URL丢失的文件从地址栏中取出,并将其替换为自定义错误页面的URL.
因此,例如,当用户登录到站点时,我将它链接到php文件,当他们点击提交时,然后浏览器将它们直接带到404错误页面,所以我看不出问题实际上是链接到一个比它应该更高的目录.
我已经尝试使用php将丢失文件的URL打印到页面,但是服务器只抓取404错误页面的URL,而不是原始丢失的文件URL.以下是我尝试这样做的方法:http://members.cox.net/midian/tutorials/php404.htm
如何在地址栏中保留原始缺失的URL时显示自定义错误页面,或者将缺少的文件的URL打印到页面?
我正在开发ASP.Net Web API应用程序,我使用AuthorizeAttribute进行身份验证.当身份验证失败时,执行的代码就是这个.
protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
HttpContext.Current.Response.AddHeader("AuthenticationStatus", "NotAuthorized");
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Forbidden);
return;
}
Run Code Online (Sandbox Code Playgroud)
此代码导致从浏览器显示未授权的请求页面,但我想要的是显示我设计的自定义页面.我怎么做?任何帮助表示赞赏.
提前致谢.
我正在cPanel中的新插件域中设置一个快速内部项目.这个特定的安装了SSL证书.我正在构建我的.htaccess并添加了一个<Files config.php>指令,deny from all以便我的config.php文件无法访问.我意识到将它存储在Web根目录之外是理想的,但在这种情况下我不能.
通常情况下,我希望www.domain.com/config.php在浏览器中获得Apache的默认403 Forbidden页面.这是在同一服务器上的其他域上发生的情况.但在这种情况下,我得到404未找到错误,说明:
未找到
在此服务器上找不到请求的URL /403.shtml.
此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误.
如果我试图定义自定义错误文档,我通常会期待这个,但在这种情况下,我不是!
使该域与同一cPanel帐户中的所有其他域不同的唯一因素是它具有SSL证书.无论使用http还是https导航,此404错误都是相同的.我已经尝试清除缓存,仍然是相同的.
任何人都可以在我的.htaccess中看到任何可能导致此问题的内容吗?
DirectoryIndex /index.php
Options -Indexes +FollowSymLinks
ServerSignature Off
# PARSE PHP IN OTHER FILES
# AddType FOR PHP AS APACHE MODULE, AddHandler FOR CGI
AddType application/x-httpd-php .ics .xml
# ATTEMPT FORCE PDF DOWNLOAD
AddType application/octet-stream .pdf
# PREVENT ACCESS TO CONFIG
<Files config.php>
order allow,deny
deny from all
</Files>
# CACHING
# http://httpd.apache.org/docs/current/mod/mod_headers.html
<FilesMatch "\.(js|css|ico|png|gif|jpg)$">
Header set Cache-Control "max-age=172800, public, …Run Code Online (Sandbox Code Playgroud) 在Windows 7中,我正在尝试设置自定义错误页面.一个用于404,一个用于500,一个用于捕获用户在超时时遇到的任何其他错误(客户端或服务器端),或者当asp进行编译时出现故障.
404.htm
500.htm
error.htm
Run Code Online (Sandbox Code Playgroud)
只是非常简单的html页面,说错误,没有任何技术,如默认值.这篇文章和这篇文章似乎是在谈论在ASP中制作错误页面,而不仅仅是采用html文件并将其设置为自定义错误页面.
在IIS中,我已经转到了不适用于ASP的错误页面选择工具

并将此信息输入Edit error pages settings对话框
我输入的完整地址:WebvView\webview_error_pages\error.htm(通过选择我点击旁边的elipses按钮进行浏览.(我已经缩短了这篇文章的所有这些地址).

自定义默认地址有效.但是,当我尝试为404创建一个错误页面时:


并尝试转到不存在的页面,我收到这个简单的错误消息:
由于发生内部服务器错误,无法显示页面.
不是我的.而不是我设置自定义404之前的默认设置.
我究竟做错了什么?
谢谢!
编辑
另外,我刚刚更改了ASP的某些部分并得到了运行时错误,而不是我的自定义错误.有没有办法阻止用户看到这些可怕的技术页面?
编辑 这是其他状态菜单的xml代码:
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
<customErrors defaultRedirect="webview_error_pages/error.htm" mode="On">
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="502" subStatusCode="-1" />
<remove statusCode="501" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="412" subStatusCode="-1" />
<remove statusCode="406" subStatusCode="-1" />
<remove statusCode="405" subStatusCode="-1" />
<remove statusCode="401" subStatusCode="-1" />
<remove statusCode="403" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
</httpErrors>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
再次感谢!
我已经尝试actionError在模块DefaultController中编写自己的,只是为了呈现错误页面(HTML仅用于测试),它也只是显示空白页面而不是显示错误页面.
我在下面做正确的方法吗?仅当我尝试访问模块路径中的不存在页面时,它才显示空白页面.
在我的模块类中,我errorHandler在init()函数中配置了如下组件:
public function init()
{
parent::init();
// initialize the module with the configuration loaded from config.php
\Yii::configure($this, require(__DIR__ . '/config.php'));
\Yii::$app->setComponents([
'errorHandler' => [
'class' => 'yii\web\ErrorHandler',
'errorAction' => 'studconsult/default/error',
] // set error action route - this to be error action in DefaultController
]);
}
Run Code Online (Sandbox Code Playgroud)
在我的DefaultController班上,我的代码如下:
public function actions()
{
return [
'error' => [
'class' => 'yii\web\ErrorAction',
],
];
}
Run Code Online (Sandbox Code Playgroud) 我在MVC 5.i的项目想要handel 404.我做到了,但问题是
当我使用以下URL访问视图时,一切正常并且符合预期:
http://localhost/Hotels/Index30701000000
Run Code Online (Sandbox Code Playgroud)
但是当我使用以下URL访问视图时,我收到404.0错误消息(错误如下所示)
http://localhost/Hotels/Edit/09099999dfdfb
http://localhost/Hotels/Edit/090/20130701000000
Run Code Online (Sandbox Code Playgroud)
错误:HTTP错误404.0 - 未找到您要查找的资源已被删除,名称已更改或暂时不可用.
我的代码是
调节器
public class ErrorController : Controller
{
// GET: Error
public ActionResult Unauthorized()
{
Response.StatusCode = 404;
Response.TrySkipIisCustomErrors = true;
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
RouteConfig
routes.MapRoute(
name: "Unauthorized",
url: "Unauthorized/{action}/{id}",
defaults: new
{
controller = "Error",
action = "Unauthorized",
id = UrlParameter.Optional
}
);
Run Code Online (Sandbox Code Playgroud)
Global.asax中
protected void Application_Error()
{
Exception exception = Server.GetLastError();
HttpException httpException = exception as HttpException;
}
Run Code Online (Sandbox Code Playgroud)
webconfig
<system.web>
<customErrors mode="On" defaultRedirect="Error">
<error statusCode="404" …Run Code Online (Sandbox Code Playgroud) c# asp.net custom-error-pages http-status-code-404 asp.net-mvc-5
我已将以下内容添加到我的web.config中,以将用户重定向到自定义错误页面而不是默认页面
'/'应用程序中的服务器错误.
错误信息.
用户被重定向到 error.html?aspxerrorpath=/paymentservices.svc
有没有办法删除该?aspxerrorpath=/paymentservices.svc部分?
web.config中:
<system.web>
<customErrors defaultRedirect="~/ErrorPages/error.html"
mode="On" xdt:Transform="Replace">
<error statusCode="500" redirect="~/ErrorPages/error.html"/>
<error statusCode="404" redirect="~/ErrorPages/error.html"/>
</customErrors>
</system.web>
Run Code Online (Sandbox Code Playgroud) 对于 404s 和 500s/502s/504s 错误,我返回自定义 JSON 错误页面:
{
"response":
{
"status": "EXCEPTION_404_NOT_FOUND",
}
}
Run Code Online (Sandbox Code Playgroud)
在我的sites-enabled/service_nginx.conf中,我将其设置如下:
error_page 404 /404.json;
location /404.json {
internal;
root /temp/error_response_templates;
}
Run Code Online (Sandbox Code Playgroud)
这工作正常。也就是说,每次 404 都会返回 JSON。但我想将请求或一些请求详细信息添加到返回的 JSON 中。例如,对于http://service.com/param1/param2/,如果遇到 404,我想在返回的 JSON 中包含 param1 和 param2。像这样:
{
"response":
{
"status":"EXCEPTION_404_NOT_FOUND",
"param1":<param1 value>,
"param2":<param2 value>,
}
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?如果是,有人可以帮我怎么做吗?提前致谢!
在我的web.config中,我有:
<customErrors mode="On" defaultRedirect="~/Error.aspx" redirectMode="ResponseRewrite">
<error statusCode="500" redirect="~/Error.aspx" />
<error statusCode="404" redirect="~/404.aspx" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)
然而,使用这些URL,只有定义了文件扩展名的第二个工作,另一个返回蓝色屏幕404"应用程序中的服务器错误".
http://127.0.0.1/scirranew/invalidpath
http://127.0.0.1/scirranew/invalidpath.aspx
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我在ASP.net 4,IIS 7.5上.