加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 404处理Azure网站

发布时间:2020-12-15 23:10:49 所属栏目:asp.Net 来源:网络整理
导读:我在Azure上有一个MVC网站.我写了一个控制器动作来代替一个资源,它应该返回HTTP 404,但是body的内容应该是一些 HTML,我在这里解释了404的原因.这是一个设置Response.StatusCode的标准操作.这在本地工作正常,但是当部署到Azure时,我没有得到我的自定义视图,而
我在Azure上有一个MVC网站.我写了一个控制器动作来代替一个资源,它应该返回HTTP 404,但是body的内容应该是一些 HTML,我在这里解释了404的原因.这是一个设置Response.StatusCode的标准操作.这在本地工作正常,但是当部署到Azure时,我没有得到我的自定义视图,而是纯文本中的错误消息.我已经删除了< customErrors>在Azure上进行调试,结果相同.

这是部署到Azure时收到的原始响应:

HTTP/1.1 404 Not Found
Cache-Control: private
Content-Length: 103
Content-Type: text/html
Server: Microsoft-IIS/8.0
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Powered-By: ARR/2.5
X-Powered-By: ASP.NET
Date: Sat,17 Aug 2013 17:24:19 GMT

The resource you are looking for has been removed,had its name changed,or is temporarily unavailable.

同样重要的是,如果我删除此服务的路由,我得到一个标准的.NET 404错误页面,所以我想我的自定义操作正在运行.行动只是直截了当:

[HttpGet]
    public ActionResult LegacyMedia(string originalUrl)
    {
        ViewBag.OriginalUrl = originalUrl;
        return new ViewResult404() {ViewName = "LegacyMedia"};
    }

    public class ViewResult404 : ViewResult
    {
        public override void ExecuteResult(ControllerContext context)
        {
            context.HttpContext.Response.StatusCode = (int) HttpStatusCode.NotFound;
            base.ExecuteResult(context);
        }
    }

在Azure上响应HTTP状态404时如何获取我的视图?

解决方法

我可以通过将这个httpErrors条目添加到web.config来解决这个问题:
<configuration>  
  <system.webServer>  
    <httpErrors existingResponse="PassThrough"/>  
  </system.webServer>  
<configuration>

我在这里找到这个答案:

http://blog.dezfowler.com/2010/09/aspnet-custom-error-not-shown-in-azure.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读