【问题标题】:How do I use Request.RequestUri.Query in .NET? (Error 11 'System.Web.HttpRequestBase' does not contain a definition for 'RequestUri')如何在 .NET 中使用 Request.RequestUri.Query? (错误 11 'System.Web.HttpRequestBase' 不包含 'RequestUri' 的定义)
【发布时间】:2013-05-30 21:18:17
【问题描述】:

我正在重写一个简单的 API GET 函数。我想让它更灵活,所以我尝试复制此question 中给出的示例。

我的代码:

  public IEnumerable<Distributeur> GetDistributeurs()
{
    NameValueCollection nvc = HttpUtility.ParseQueryString(Request.RequestUri.Query);
    var departementCode = nvc["departementCode"];
    // BL comes here



    var repository = new LeadRepository();
    return repository.getDistributeurs(departementCode);
}

不幸的是,我在构建时收到错误“无法解析 RequestUri”:

错误 11“System.Web.HttpRequestBase”不包含“RequestUri”的定义,并且找不到接受“System.Web.HttpRequestBase”类型的第一个参数的扩展方法“RequestUri”(您是否缺少使用指令还是程序集引用?)

我去了微软docs,但它们几乎是空的。

【问题讨论】:

    标签: c# .net api asp.net-mvc-2 get


    【解决方案1】:

    Request 对象是HttpRequest 的一个实例,而不是HttpWebRequest。没有属性HttpRequest.RequestUri。您要找的房产是Request.Url.Query:

    HttpUtility.ParseQueryString(Request.Url.Query);
    

    http://msdn.microsoft.com/en-us/library/system.web.httprequest.url.aspx

    【讨论】:

      【解决方案2】:

      您将System.Net.HttpWebRequestSystem.Web.HttpRequest 混淆了。

      前者用于向外部服务器发起 HTTP 请求。后者用于表示发送到服务器的 HTTP 请求(在页面和控制器中别名为 Request,引用 System.Web.HttpContext.Current.Request)。

      【讨论】:

        【解决方案3】:

        我来晚了...但我想与其他人分享我的经验。 我有同样的问题。最后,我发现是因为我继承了错误的基类。

        API => System.Web.Http.ApiController
        MVC => System.Web.Mvc.Controller
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-07-06
          • 2018-12-25
          • 1970-01-01
          • 2016-02-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多