代码之家  ›  专栏  ›  技术社区  ›  Mike Chaliy

ASP.NET更改错误响应的位置和原因?

  •  1
  • Mike Chaliy  · 技术社区  · 15 年前

    我希望我的asp.net mvc应用程序返回http响应,代码为400,错误描述为body。我的代码是:

    response.StatusCode = 400;
    response.Write("Some error");
    response.End();
    

    当我在本地主机上测试这段代码时,我得到了预期的结果。但在远程服务器上,响应文本只包含错误的文本描述,在本例中为“错误请求”。

    1. 你能解释一下这种行为吗?
    2. 解决这个问题的办法是什么?

    web服务器-iis7,locahost意味着我可以从本地计算机远程访问。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Mike Chaliy    15 年前

    答案很简单:

    response.TrySkipIisCustomErrors = true;
    
        2
  •  0
  •   AnthonyWJones    15 年前

    当你说“localhost”的时候,你是指在vs中调试时使用的cassini开发web服务器对吧?

    你要部署的服务器是iis6?默认情况下,它捕获400并发送自己的响应。我不确定你有没有办法阻止它(你也许能用Meta Baby搞乱,但我不确定)。在发送该代码时,可以在网站中指定要执行的页面中的URL。

    那就是为什么你使用400而不是仅仅抛出一个异常?400有点被soap之类的协议滥用,soap将格式错误的http请求的含义扩展到应用程序中,但这是边界线,因为soap也是一个传输信封。

    不过,我觉得奇怪的是,有一个申请,已经接受了一个请求,然后发回一个400的答复,你通常会发送一个变化500,而不是。