"HttpRequest"没有包含"Params"的定义。

6
我正在使用.NET Core 2.0.2C#编写一个ASP.NET web应用程序。
每次在我的控制器中使用Request.Url时,dotnet run都会输出错误:

error CS1061:'HttpRequest'不包含名为'Url'的定义,并且找不到接受类型为“HttpRequest”的第一个参数的扩展方法'Url'

Request.Params也有同样的问题。尽管.NET文档中有Params属性的getter。
我设法找到了Request.Url的解决方法:我使用Request.GetUri()方法。但我找不到Request.Params的替代方法。
以下是我的using语句:
using System;
using System.Diagnostics;
using area.Models;
using Microsoft.AspNetCore.Identity;
using System.Threading.Tasks;
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.AspNetCore.Mvc;
using Tweetinvi;
using Tweetinvi.Models;

我为什么会遇到这些错误?你知道如何修复吗?否则,你有没有其他方法来获取Request.Params


你具体是在 Params 集合中寻找什么? - Shyju
1
你可以尝试使用 Request.Query["oauth_verifier"] - Shyju
4个回答

6

你以前从通用请求参数中获取的内容现在可以通过Request的特定属性来访问,比如QueryCookiesForm等。

如果你想要访问查询字符串的值,可以使用Request.Query属性。

var v = Request.Query["oauth_verifier"];

您可以在集合上使用TryGetValue方法来获取值,如果它存在的话。
if (Request.Query.TryGetValue("oauth_verifier",out StringValues val))
{
    var theValue = val[0];
    var orUseThis = val.ToString();
    // Use theValue as needed
}

3

HttpRequest类在System.WebMicrosoft.AspNetCore.Http命名空间中以不同的方式定义。前者具有Params属性,而后者没有。调试以查找您拥有哪种类型的HttpRequest(并添加适当的using...)。


1
"

HttpRequest.Params 是一个包含(QueryStringFormCookies)的集合,所以您可以获取它们:

"
HttpContext.Request.Cookies;
HttpContext.Request.QueryString;
HttpContext.Request.Form;

HttpRequest.Params属性


正如我在问题中所说的,根据文档中的getter,我知道应该能够获取Request.Params。但是我却做不到...如上所述,我收到了CS1061错误。 - Ronan Boiteau

1
var allParams = Request.Query.Concat(Request.Form);

如果你想要一个更简单的方式来浏览字典:
var allParams = Request.Query.Concat(Request.Form)
    .ToDictionary(p => p.Key, p => p.Value);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接