【问题标题】:Web API - Request.CreateResponse with HttpStatusCode.BadRequest causing Internal server errorWeb API - Request.CreateResponse 与 HttpStatusCode.BadRequest 导致内部服务器错误
【发布时间】:2014-10-30 10:40:15
【问题描述】:

我的项目中的以下代码行存在问题。我在 Windows 2008 R2 和 IIS 7.5 上使用 Web API。

return Request.CreateResponse(HttpStatusCode.BadRequest, "Bad Request");

但是,这个命令可以完美运行:

return Request.CreateResponse(HttpStatusCode.OK, "Ok Response");

知道为什么会这样吗?

控制器代码:

[Throttle(Name = "ProductCtrl", Count = 10, Seconds = 10)]
public class ProductController : ApiController
{
    [HttpGet]
    [Authorize]
    [ActionName("Current-ProductName")]
    public HttpResponseMessage GetCurrentProductName(string id)
    {
      // I added this code to test also but I can see the log but it return  
      // Internal server error instead  Bad Request
       Log.Info("Test");
       return Request.CreateResponse(HttpStatusCode.BadRequest, "Bad Request");

        try
        {

            //Codes to get the data .....

            var productName = "My productName";
            return Request.CreateResponse(HttpStatusCode.OK, productName);

        }
        catch (Exception e)
        {
            //Log the Errors...

            return Request.CreateResponse(HttpStatusCode.BadRequest, "Bad Request");
        }

    }


}

在 WebApi.Config 中

config.Routes.MapHttpRoute(
            name: "ProductCtrlWithAction",
            routeTemplate: "api/productInfo/{action}/{id}",
            defaults: new { controller = "Product", action = "All", id = RouteParameter.Optional }
        );

从 Fiddler 调用 /Api/ProductInfo/Current-ProductName/1001

【问题讨论】:

  • 这个响应状态到底有什么问题?由于我看不到整个代码,我可以假设返回这种状态的条件不匹配。像这样的伪代码: if (model.IsValid != true) {return badrequest};
  • 嗨安德烈,实际的问题是当我返回 Request.CreateResponse(HttpStatusCode.BadRequest, "BadRequest") 给出内部服务器错误。 Request.CreateResponse(HttpStatusCode.OK, productName) 只给了我正确的 httpstatus 代码,除了这一切都给了我内部服务器错误,即使只有一行代码。对不起,如果我的回复让你感到困惑。谢谢

标签: asp.net web-services asp.net-web-api


【解决方案1】:

我遇到了同样的问题。当我将返回值更改为:return BadRequest(); 时,它再次起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 2013-08-11
    • 2012-03-29
    相关资源
    最近更新 更多