我有空的Web API项目以及使用VS2015创建的完整MVC项目。我注意到HttpRequestMessage
位于System.Net.Http
,这很好但不适用于下面的CreateResponse
:
此代码来自我的异常记录器中间件,它也从以前的Web API 2返回格式化的json。
var resp = request.CreateResponse<HttpError>(HttpStatusCode.InternalServerError, new HttpError("Internal Server Error. Reference: " + guid), config);
我很难找到CreateResponse
以及System.Net.Http.HttpRequestMessageExtensions
类中可用的HttpError
扩展方法。以前都在Microsoft.AspNet.WebApi.Core
包中。
查看ASP.NET 5代码后,我相信它仅在Microsoft.AspNet.Mvc.WebApiCompatShim
中可用。但它不包含在MVC示例项目中。
问题:
什么是WebApiCompatShim
包,我可以在项目中安全地使用它吗?
CreateResponse
来自HttpRequestMessage
的正确途径是什么?
更新
This WebApiCompatShimWebSite表示WebApiCompatShim
获取Web API 2. *喜欢行为
所以似乎只是出于兼容性目的。我必须重组代码。现在我发现MVC没有任何消息处理程序功能,似乎自定义中间件是可行的方法。
答案 0 :(得分:3)
如果添加NuGet包Microsoft.AspNet.WebApi.Core
,您将获得所需的扩展程序。
参考:https://www.nuget.org/packages/microsoft.aspnet.webapi.core/
答案 1 :(得分:3)
这是HttpRequestMessage
类的扩展方法。
您必须引用Nuget包Microsoft.AspNet.WebApi.Core中包含的以下DLL:
Nuget\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll
这次你可以看到CreateResponse
方法:
var response = request.CreateResponse(...)
答案 2 :(得分:2)
根据:
https://docs.asp.net/en/latest/tutorials/first-web-api.html
您可以通过创建 if( /^\+[0-9]{3}/[0-9]{3}[A-Z]+[0-9]{3}$/.test( code ))){
// ^ ^
的新实例来实现类似的功能(以后可以通过设置ObjectResult
属性来更改状态代码。)