【问题标题】:Missing request.CreateResponse in vb.net Webapi Projectsvb.net Webapi 项目中缺少 request.CreateResponse
【发布时间】:2013-05-06 17:57:57
【问题描述】:

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

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

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

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

我想修复智能感知,但真的不需要它。

谢谢!

史蒂夫

更新 我在 2012 年 8 月找到了这个 forum post 的答案,解释说它已被复制,但似乎尚未修复。

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

【问题讨论】:

  • 我想,这是由于 IDE 设置在 VB 中对智能感知隐藏了高级选项(类似于“显示高级成员”的选项)。
  • 这似乎不相关,因为 mVS2012 选项中的框是选中的“自动列出成员”和取消选中的隐藏高级成员。

标签: asp.net vb.net asp.net-mvc-4 asp.net-web-api


【解决方案1】:

有一种解决方法

我想出了以下解决方案:

  1. 创建调用原始 CreateResponse 方法的扩展方法 CreateResponse2
  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)

截图:

【讨论】:

    猜你喜欢
    • 2020-06-22
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多