【发布时间】: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