gpt4 book ai didi

asp.net - 代码无效或已过期。使用 API 调用显式使 session 无效

转载 作者:行者123 更新时间:2023-12-01 04:00:49 25 4
gpt4 key购买 nike

有一个使用Facebook APIASP.NET 4.0应用程序。直到上周才正常工作。当我尝试获取应用程序的访问 token 时

public static string GetWebResponse_HttpWebRequest(string url)
{
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
WebResponse webResponse;
string response = "";

webResponse = request.GetResponse();
io.Stream stream = webResponse.GetResponseStream();
io.StreamReader str = new io.StreamReader(stream);
response = str.ReadToEnd();

return response;
}

url: https://graph.facebook.com/oauth/access_token?client_id=117260348353246&client_secret=7b8734d7f36bf007d0d40bec728b57d9&code=AQD5xcdQiE2Ab9RpmexVUdP-i_2Nm5V52SVhxBVXkeq7WlJoOQ-xB4wYgbs3yeejLFHmR-lKLj0cwg6FeMWKGvHwT4akAlN7uMLxqu9YaqFumup3SPkuTjuQYETTCqQ1n2MAQjzexqiv8WV3UEcO4Qy5lObQ13qdYlKoYdKUacT42oJ0vhVuopH2WNkk3QRCq6DeAl02YU-sD8X8PTZgu52e&redirect_uri=http://www.opinere.com

有一个错误:

{"error":{"message":"Code was invalid or expired. The session was invalidated explicitly using an API call.","type":"OAuthException","code":100}}

在我的本地计算机上,应用程序运行正常。在 Windows Azure 上,有时它可以工作,但大多数情况下都不能。
怎么了?

更新:有两个请求:1) without error2) 一分钟后with error - Code2(访问 token )为空似乎差异在于 header “HTTP_REFERER”。第二个请求不存在。

最佳答案

让我向您解释一下发生了什么。此问题与多个 Web 角色有关。

Azure 中的 Web 角色是什么?

Web 角色是 VHD,即虚拟运行的系统镜像,并将您的数据/网站复制到其中。分配、初始化和复制是结构的工作。

网络角色如何协同工作?

负载均衡器在角色之间平等​​地平衡传入流量。这意味着在一个 Web 角色中创建的 session 将在另一个 Web 角色中无效。不仅仅是 session ,甚至表单例份验证都不起作用。

为什么?

因为 session /表单例份验证使用 machineKey 进行加密/哈希。每个Web角色/虚拟机都有不同的machineKey。现在你明白为什么它有时有效有时无效了。当请求到达创建 session 的同一角色虚拟机时,它可以工作,否则就不会。一般来说,对于每个创建的 session ,它仅适用于 1:no 个角色时间(大约)。

解决方案?

这就像您在网络场中托管您的网站一样。因此,您应该了解如何使您的网站在网络场中运行。或者,您可以只使用一个 Web 角色,如果您使用 2 个小型虚拟机/角色,则可以只使用一个大型虚拟机,但这一切都取决于您的应用程序的行为方式,因此您应该首先测试哪个最有效,多个虚拟机或一个大虚拟机。此外,使用单个虚拟机您会失去可靠性,如果您的角色下降,您的网站也会关闭。

在此处寻找使用表存储的解决方案 http://www.intertech.com/Blog/Post/Session-State-in-Windows-Azure.aspx

编辑使用 cookie 代替将 token 保存到 session 中,但这并没有解决根本问题,如果不针对核心问题采取措施,您将遇到许多问题。

关于asp.net - 代码无效或已过期。使用 API 调用显式使 session 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13582820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com