我正在使用.NET Core 2.0.2在C#中创建ASP.NET Web应用程序。
每次我在控制器中使用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
?
你曾经从泛型请求参数获得的东西可以在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
}
HttpRequest
类在System.Web
和Microsoft.AspNetCore.Http
名称空间中定义(以不同的方式)。前者有Params
财产,后者没有。调试找到你有什么样的HttpRequest
(并添加适当的using...
)。
HttpRequest.Params
是(QueryString
,Form
和Cookies
)的集合,所以你可以得到它们:
HttpContext.Request.Cookies;
HttpContext.Request.QueryString;
HttpContext.Request.Form;