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

Ste*_*eve 6 vb.net asp.net asp.net-mvc-4 asp.net-web-api

我似乎已经找到了问题,但不知道如何修复它,或者我是否可以.

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

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

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

我想修复intellisense,但实际上并不需要它.

谢谢!

史蒂夫

更新 我发现这个论坛帖子在2012年8月回复,解释它已被复制,但似乎尚未修复.

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

Sim*_*sky 0

有一个解决方法

我想出了以下解决方案:

  1. CreateResponse2创建调用原始CreateResponse方法的扩展方法
  2. 在您的控制器中,调用新的自定义方法 ( Request.CreateResponse2(...))

下面是我的解决方案:

创建一个新模块 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
Run Code Online (Sandbox Code Playgroud)

在控制器中的用法:

 Return Request.CreateResponse2(Of SomeClass)(HttpStatusCode.BadRequest, objSomeClass)
Run Code Online (Sandbox Code Playgroud)

截屏:

工作解决方法