vb.net Webapi 项目中缺少 request.CreateResponse

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/16509543/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-17 13:34:07  来源:igfitidea点击:

Missing request.CreateResponse in vb.net Webapi Projects

asp.netvb.netasp.net-mvc-4asp.net-web-api

提问by Steve

I seem to have tracked down the problem but do not know how to fix it, or if I can.

我似乎已经找到了问题,但不知道如何解决,或者是否可以解决。

When I create a new C# WebAPIproject, and add an import for System.Net.HttpI can access Request.CreateResponse<T>.

当我创建一个新C# WebAPI项目并添加一个导入时,System.Net.Http我可以访问 Request.CreateResponse<T>.

When I create a new VB.Net WebAPIproject, and add an import for System.Net.Httpall I have is Request.createODataErrorResponse.

当我创建一个新VB.Net WebAPI项目并为System.Net.Http我拥有的所有文件添加导入时Request.createODataErrorResponse

I can however ignore intellisense and access CreateResponseanyway. Seems VB just isn't interpreting the various extensions correctly.

然而,我可以忽略智能感知和访问CreateResponse。似乎 VB 只是没有正确解释各种扩展。

I'd like to fix the intellisense but don't really have a need for it.

我想修复智能感知,但实际上并不需要它。

Thanks!

谢谢!

Steve

史蒂夫

UpdateI found this forum postwith an answer back in August 2012 explaining that it had been duplicated, but does not yet appear to be fixed.

更新我在 2012 年 8 月发现这个论坛帖子有一个答案,说明它已被复制,但似乎尚未修复。

As I am new here, should this be closed?

因为我是新来的,这应该关闭吗?

回答by Simcha Khabinsky

There is a workaround

有一个解决方法

I came up with the following solution:

我想出了以下解决方案:

  1. Create extensions methods CreateResponse2that call the original CreateResponsemethod
  2. In your controllers, call the new custom method (Request.CreateResponse2(...))
  1. 创建CreateResponse2调用原始CreateResponse方法的扩展方法
  2. 在您的控制器中,调用新的自定义方法 ( Request.CreateResponse2(...))

Below is my solution:

以下是我的解决方案:

Create a new module HttpRequestMessageExtensions

创建一个新模块 HttpRequestMessageExtensions

 Imports System.Net
 Imports System.Net.Http
 Imports System.Web
 Imports System.Runtime.CompilerServices
 Imports System.Web.Http

 Public Module HttpRequestMessageExtensions

     <Extension()> _
     Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage,     statusCode As HttpStatusCode, value As T) As HttpResponseMessage
         Return request.CreateResponse(Of T)(statusCode, value)
     End Function

     <Extension()> _
     Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage, statusCode As HttpStatusCode, value As T, Configuration As HttpConfiguration) As HttpResponseMessage
         Return request.CreateResponse(Of T)(statusCode, value, Configuration)
     End Function

     <Extension()> _
     Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage, statusCode As HttpStatusCode, value As T, mediaType As String) As HttpResponseMessage
         Return request.CreateResponse(Of T)(statusCode, value, mediaType)
     End Function

     <Extension()> _
     Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage, statusCode As HttpStatusCode, value As T, formatter As Formatting.MediaTypeFormatter) As HttpResponseMessage
         Return request.CreateResponse(Of T)(statusCode, value, formatter)
     End Function

     <Extension()> _
     Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage, statusCode As HttpStatusCode, value As T, mediaType As Headers.MediaTypeHeaderValue) As HttpResponseMessage
         Return request.CreateResponse(Of T)(statusCode, value, mediaType)
     End Function

     <Extension()> _
     Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage, statusCode As HttpStatusCode, value As T, formatter As Formatting.MediaTypeFormatter, mediaType As String) As HttpResponseMessage
         Return request.CreateResponse(Of T)(statusCode, value, formatter, mediaType)
     End Function

     <Extension()> _
     Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage, statusCode As HttpStatusCode, value As T, formatter As Formatting.MediaTypeFormatter, mediaType As Headers.MediaTypeHeaderValue) As HttpResponseMessage
         Return request.CreateResponse(Of T)(statusCode, value, formatter, mediaType)
     End Function

 End Module

Usage in controllers:

在控制器中的使用:

 Return Request.CreateResponse2(Of SomeClass)(HttpStatusCode.BadRequest, objSomeClass)

Screenshot:

截屏:

Working Workaround

工作解决方法