【发布时间】:2021-04-22 20:21:28
【问题描述】:
我有两个“相同”的控制台应用程序,一个针对 .NET Framework 4.7.2,另一个针对 net5.0。
在这两个应用程序中,我使用完全相同的方法,在 sn-p 下方:
var client = new RestClient("https://secure.xxxx.yy/login.aspx")
{
Timeout = -1
};
var request = new RestRequest(Method.POST);
request.AddHeader("Connection", "keep-alive");
... //snip
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Cookies.FirstOrDefault(cookie => cookie.Name == "ASP.NET_SessionId")?.Value);
在 net5.0 版本中,response.Cookies 包含 3 个项目(有我要找的那个),但在 .NET Framework 版本中,response.Cookies 只包含 1 个项目(没有我要找的那个) ...
这是什么原因,我在 .NET Framework 中获得相同结果的可能性是什么? 我正在尝试创建一个 Excel VSTO 插件,所以我认为我绑定到了 .NET Framework,对吧?
在 VS 中的屏幕截图下方:
在 fiddler 的响应下方(两个 .net 版本相同):
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=utf-8
Location: /xxxxx.eu/authorized/home.aspx
Server: Microsoft-IIS/7.5
Access-Control-Allow-Origin: *
Set-Cookie: ASP.NET_SessionId=0hslsdigt5kpha30rtk4veoc; path=/; HttpOnly; SameSite=Lax
X-AspNet-Version: 4.0.30319
Set-Cookie: .ASPNET=F1B8BEB09F20EF52B75BBA81B5535EC580B873E5A65F43AEC779C27C50730998582DC814DCAF194206636ACFBA706E2DE90371071F9AEB6B03E0C8ACF0BDE44CB3844230CC2143B2307EBB4889C12764167E15CA3240A74B430156205F6CD53AC8982EBE8EF3FE51E09862DF5AB15A7145F8451357515C48D3F3F09D48E7D890; path=/; HttpOnly; SameSite=Lax
X-Powered-By: ASP.NET
Date: Thu, 22 Apr 2021 11:40:28 GMT
Content-Length: 156
【问题讨论】:
-
-
@phuzi,我已经与 Fiddler 确认过:两个请求都返回 3 个 cookie(而在 .NET Framework 版本中只能访问一个)
-
您能否在问题中添加详细信息,包括 Fiddler 的详细信息?
-
我添加了一些来自VS的截图;我会尝试对提琴手结果做同样的事情
-
想知道您看不到的 Cookie 是否标记为 http-only 这通常意味着它们对 JavaScript 不可见,但想知道 RestSharp 是否正在做类似的事情