'HttpRequest'不包含'Params'的定义

时间:2017-11-26 18:11:17

标签: c# asp.net .net asp.net-core asp.net-core-mvc

我正在使用 .NET Core 2.0.2 C#中创建 ASP.NET 网络应用。

每次我在控制器中使用Request.Url时,dotnet run都会输出错误:

  

错误CS1061:'HttpRequest'不包含'Url'的定义,也没有扩展方法'Url'接受类型'HttpRequest'的第一个参数可以找到

同样的事情发生在Request.Params上。即使.NET documentation表示Params属性有吸气剂。

我设法找到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吗?

3 个答案:

答案 0 :(得分:3)

以前从通用请求参数获取的内容可以在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
}

答案 1 :(得分:1)

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

答案 2 :(得分:0)

HttpRequest.Params是(QueryStringFormCookies)的集合,因此您可以获取它们:

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

HttpRequest.Params Property