缺少request.CreateResponse在vb.net的WebAPI项目(Missing r

2019-09-02 17:38发布

我似乎已经找到了问题,但不知道如何解决它,或者如果我能。

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

当我创建一个新的VB.Net WebAPI项目,并添加了对进口System.Net.Http我只有Request.createODataErrorResponse

不过,我可以忽略智能感知和接入CreateResponse反正。 似乎VB只是没有正确地解释各种扩展。

我想解决这个智能感知,但真的没有需要它。

谢谢!

史蒂夫

更新我发现这个论坛的帖子一个答案早在2012年8月解释说,它已被复制,但似乎还没有被固定。

由于我是新来的,这应该关闭?

Answer 1:

有一种变通方法

我想出了以下解决方案:

  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

用法在控制器:

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

截图:



文章来源: Missing request.CreateResponse in vb.net Webapi Projects