长时间运行的Ajax调用返回http状态401

时间:2011-08-25 19:55:08

标签: c# asp.net web-services iis-6 http-status-code-401

我有一个加载的asp.net页面,然后使得ajax调用可能需要一些时间。有时呼叫会超时。在某些数据不完美的情况下,这是预期的。我一直注意到它实际上会提示最终用户的用户名和密码。这似乎是新的:这个页面几年来一直没有像这样的401错误进行此调用,我还没有听到有关此行为的报告。当我查看fiddler时,我看到Web服务器在进行Web服务调用时返回401.1错误。 更多信息: 这是一个调用本地Web服务的ASP.NET页面。这里是脚本管理器:

    <ajax:ToolkitScriptManager  ID="ScriptManager1" runat="server" AsyncPostBackTimeout="5000">
     <Services>  
<asp:ServiceReference Path="~/WebService/DataWebService.asmx" />
   </Services>
    </ajax:ToolkitScriptManager >

以下是对WS的调用:

 WSNameSapce.WebService.set_timeout(2000000) 
 WSNameSapce.DataWebService.GetValues('<%=Current.AccountId%>',displayResult, displayErrorMessage);

websits使用IIS2 win server 2003,并配置为使用匿名身份验证。

Web服务调用一些存储过程并进行一些(WCF)webservce调用。当procs / WS调用需要很长时间时。我看到线程中止异常,并提示我提供我的Windows登录信息:就像配置了基本身份验证一样。 我了解一切,直到我被提示提供我的Windows登录时。如果Webservice超时,我应该得到500错误,我的代码处理。

任何帮助我们理解为什么要提示用户登录,以及如何防止这种情况发生将不胜感激。

1 个答案:

答案 0 :(得分:0)

可怕的401.1。您无法通过NTLM在管道中的某个位置进行身份验证。确保您可以在所有端点上进行身份验证。

401.1 and 401.2-Authentication Problems