asp.net - vb.net Webapi 项目中缺少 request.CreateResponse

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

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

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

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

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

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

谢谢!

史蒂夫

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

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

最佳答案

有一个解决方法

我想出了以下解决方案:

  • 创建扩展方法CreateResponse2那叫原CreateResponse方法
  • 在您的 Controller 中,调用新的自定义方法 ( 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)
    

    截图:

    Working Workaround

    关于asp.net - vb.net Webapi 项目中缺少 request.CreateResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16509543/

    相关文章:

    c# - HttpContext.Current.User.Identity.IsAuthenticated 在登录控件 LoggedIn 事件中为 false

    asp.net - 对 asp.net 包请求禁用 session 访问

    c# - 递归 LINQ 查询函数中的嵌套索引

    sql-server - VBNET中应使用什么错误处理

    c# - Blazor onended 不开火

    javascript - 使用提示框中的输入并将其保存到数据库

    asp.net - 我可以从 div onclick 事件调用代码隐藏函数吗?

    jquery - MVC 4 客户端验证不适用于使用 Ajax 加载的表单

    c# - ASP.NET MVC 4 : Skip Validation in Child Object

    asp.net-mvc - MVC 4 Bundles Scripts.Render 每个文件的脚本标签