如何在.net中使用Request.RequestUri.Query ?System.Web.HttpRequestBa

本文关键字:Query RequestUri System HttpRequestBa Web Request net | 更新日期: 2023-09-27 18:16:47

我正在重写一个简单的API GET函数。我想让它更灵活,所以我试着复制这个问题中给出的例子。

我代码:

  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'的定义,也没有扩展方法'RequestUri'接受类型为'System.Web '的第一个参数。可以找到HttpRequestBase'(您是否缺少using指令或程序集引用?)

我去了微软文档,但他们几乎是空的。

如何在.net中使用Request.RequestUri.Query ?System.Web.HttpRequestBa

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

你把System.Net.HttpWebRequestSystem.Web.HttpRequest搞混了。

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

我迟到了…但我想分享我的经验给别人。我也有同样的问题。最后,我发现这是因为我继承了错误的基类。

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