我正在使用 .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
吗?
答案 0 :(得分:3)
以前从通用请求参数获取的内容可以在Request
的特定属性中访问,例如Query
,Cookies
,Form
等。
如果您尝试访问查询字符串项值,则可以使用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.Web
和Microsoft.AspNetCore.Http
命名空间中定义(以不同方式)。前者有Params
属性,后者没有。调试以查找您拥有的HttpRequest
类型(并添加适当的using...
)。
答案 2 :(得分:0)
HttpRequest.Params
是(QueryString
,Form
和Cookies
)的集合,因此您可以获取它们:
HttpContext.Request.Cookies;
HttpContext.Request.QueryString;
HttpContext.Request.Form;