如何在ASP.NET 5中使用HttpRequestMessage.CreateResponse <httperror>()

时间:2015-11-04 07:26:40

标签: c# asp.net asp.net-web-api asp.net-core

我有空的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没有任何消息处理程序功能,似乎自定义中间件是可行的方法。

3 个答案:

答案 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属性来更改状态代码。)