【问题标题】:'HttpRequest' does not contain a definition for 'Params'“HttpRequest”不包含“Params”的定义
【发布时间】:2017-11-26 18:11:16
【问题描述】:

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

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

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

Request.Params 也会发生同样的事情。尽管.NET documentation 表示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 集合中具体寻找什么?
  • 我正在尝试使用 Tweetinvi 库:github.com/linvi/tweetinvi/wiki/Authentication。我正在运行“URL 重定向身份验证”示例代码:Request.Params.Get("oauth_verifier")。所以我想访问ParamsGet()方法
  • 你可以试试Request.Query["oauth_verifier"]

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      HttpRequest.Params Property

      【讨论】:

      • 正如我在问题中所说,我知道我应该能够得到Request.Params,因为文档说它有一个吸气剂。但我不能...如上所述,我收到错误 CS1061。
      【解决方案4】:
      var allParams = Request.Query.Concat(Request.Form);
      

      如果您想要更简单的方式来浏览字典:

      var allParams = Request.Query.Concat(Request.Form)
          .ToDictionary(p => p.Key, p => p.Value);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-27
        相关资源
        最近更新 更多