vb.net Webapi 项目中缺少 request.CreateResponse
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16509543/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Missing request.CreateResponse in vb.net Webapi Projects
提问by Steve
I seem to have tracked down the problem but do not know how to fix it, or if I can.
我似乎已经找到了问题,但不知道如何解决,或者是否可以解决。
When I create a new C# WebAPIproject, and add an import for System.Net.HttpI can access
Request.CreateResponse<T>.
当我创建一个新C# WebAPI项目并添加一个导入时,System.Net.Http我可以访问
Request.CreateResponse<T>.
When I create a new VB.Net WebAPIproject, and add an import for System.Net.Httpall I have is Request.createODataErrorResponse.
当我创建一个新VB.Net WebAPI项目并为System.Net.Http我拥有的所有文件添加导入时Request.createODataErrorResponse。
I can however ignore intellisense and access CreateResponseanyway. Seems VB just isn't interpreting the various extensions correctly.
然而,我可以忽略智能感知和访问CreateResponse。似乎 VB 只是没有正确解释各种扩展。
I'd like to fix the intellisense but don't really have a need for it.
我想修复智能感知,但实际上并不需要它。
Thanks!
谢谢!
Steve
史蒂夫
UpdateI found this forum postwith an answer back in August 2012 explaining that it had been duplicated, but does not yet appear to be fixed.
更新我在 2012 年 8 月发现这个论坛帖子有一个答案,说明它已被复制,但似乎尚未修复。
As I am new here, should this be closed?
因为我是新来的,这应该关闭吗?
回答by Simcha Khabinsky
There is a workaround
有一个解决方法
I came up with the following solution:
我想出了以下解决方案:
- Create extensions methods
CreateResponse2that call the originalCreateResponsemethod - In your controllers, call the new custom method (
Request.CreateResponse2(...))
- 创建
CreateResponse2调用原始CreateResponse方法的扩展方法 - 在您的控制器中,调用新的自定义方法 (
Request.CreateResponse2(...))
Below is my solution:
以下是我的解决方案:
Create a new module HttpRequestMessageExtensions
创建一个新模块 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
Usage in controllers:
在控制器中的使用:
Return Request.CreateResponse2(Of SomeClass)(HttpStatusCode.BadRequest, objSomeClass)
Screenshot:
截屏:



