7

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

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

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

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

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

谢谢!

史蒂夫

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

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

4

1 回答 1

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

在控制器中的用法:

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

截屏:

解决方法

于 2014-01-16T14:10:34.103 回答