我似乎已经找到了问题,但不知道如何解决它,或者我是否可以。
当我创建一个新的 C# WebAPI
项目,并为 System.Net.Http
添加导入我可以访问Request.CreateResponse<T>
.
当我创建一个新的 VB.Net WebAPI
项目,并为 System.Net.Http
添加导入我只有Request.createODataErrorResponse
.
但是,我可以忽略智能感知并访问 CreateResponse
反正。似乎 VB 只是没有正确解释各种扩展。
我想修复智能感知,但实际上并不需要它。
谢谢!
史蒂夫
更新
我找到了 forum post早在 2012 年 8 月就有一个答案解释说它已被复制,但似乎尚未修复。
由于我是新来的,应该关闭吗?
最佳答案
有一个解决方法
我想出了以下解决方案:
CreateResponse2
那叫原CreateResponse
方法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
在 Controller 中的用法:
Return Request.CreateResponse2(Of SomeClass)(HttpStatusCode.BadRequest, objSomeClass)
截图:
关于asp.net - vb.net Webapi 项目中缺少 request.CreateResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16509543/