我有一个由Windows身份验证保护的Web API方法。这是客户端代码:
var uri = new Uri(@"https://myapi.mysite.com/api/method");
var request = HttpWebRequest.Create(uri);
request.Method = "GET";
request.ContentLength = 0;
request.ContentType = "application/json";
request.Timeout = 30 * 60 * 1000;
request.Credentials = new NetworkCredential("userName", "password", "domain");
using (var response = request.GetResponse())
{
using (var responseStream = new StreamReader(response.GetResponseStream()))
{
Console.WriteLine(responseStream.ReadToEnd());
}
}
当https://myapi.mysite.com/api/method返回时间不到5分钟时,一切都很顺利。只要需要5分钟或更长时间(5分钟似乎是一个神奇的数字),我就会开始回归401。我两次使用相同的凭据。除了服务器正在处理的数据量之外,一切都是相同的(显然更多的数据导致更长的处理时间)。
具体的401我得到的是401 - Unauthorized: Access is denied due to invalid credentials.
'消息。
我已经尝试过KeepAlive,CredentialCache,设置服务器超时和许多其他选项/方法,并且无法正常工作。
服务器是在密码永不过期的服务帐户下运行的IIS 7.5。
任何帮助都将不胜感激。