【问题标题】:How can I use HttpRequestMessage.CreateResponse<HttpError>() in ASP.NET 5如何在 ASP.NET 5 中使用 HttpRequestMessage.CreateResponse<HttpError>()
【发布时间】:2015-11-04 07:26:40
【问题描述】:

我有一个空的 Web API 项目以及使用 VS2015 创建的完整 MVC 项目。我注意到HttpRequestMessageSystem.Net.Http 中,这很好,但不适用于下面的CreateResponse

此代码来自我的异常记录器中间件,该中间件还从以前的 Web API 2 返回格式化的 json。

var resp = request.CreateResponse<HttpError>(HttpStatusCode.InternalServerError, new HttpError("Internal Server Error. Reference: " + guid), config);

我正在努力找出应该在System.Net.Http.HttpRequestMessageExtensionsHttpError 类中可用的CreateResponse 扩展方法。之前都在Microsoft.AspNet.WebApi.Core 包中。

查看 ASP.NET 5 代码后,我相信它仅在 Microsoft.AspNet.Mvc.WebApiCompatShim 中可用。但是它不包含在 MVC 示例项目中。

问题:

WebApiCompatShim 包是什么,我可以在项目中安全地使用它吗?

HttpRequestMessageCreateResponse 的正确方法是什么?

更新

This WebApiCompatShimWebSite 表明WebApiCompatShim

获得类似 Web API 2.* 的行为

所以似乎只是出于兼容性目的。我必须重组代码。现在我发现 MVC 没有任何消息处理程序功能,并且似乎自定义中间件是要走的路。

【问题讨论】:

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


    【解决方案1】:

    如果您添加 NuGet 包 Microsoft.AspNet.WebApi.Core,您将获得您正在寻找的扩展。

    参考:https://www.nuget.org/packages/microsoft.aspnet.webapi.core/

    【讨论】:

    • 但我相信这个包不适用于 ASP.NET 5
    【解决方案2】:

    这是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(...)
    

    【讨论】:

      【解决方案3】:

      根据:

      https://docs.asp.net/en/latest/tutorials/first-web-api.html

      您可以通过创建ObjectResult 的新实例来实现类似的功能(稍后可以通过设置StatusCode 属性来更改状态代码)。

      【讨论】:

        猜你喜欢
        • 2021-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-25
        • 1970-01-01
        • 2016-05-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多