使用表单身份验证和错误身份验证票证时,ASMX脚本服务返回401基本

时间:2013-08-12 23:10:38

标签: asp.net ajax asmx webmethod

我有一个asp.net 4.0应用程序,它包含一个用于通过ajax呈现某些数据的Web服务。我通过脚本引用将服务附加到我的scriptmanager。我的网站受表单身份验证保护。

<ajaxtoolkit:toolkitscriptmanager id="ScriptManager1" runat="server" enableviewstate="false"
            asyncpostbacktimeout="3600" scriptmode="Auto" enablepagemethods="true" CombineScripts="true" EnableCdn="true" >
            <Services>
                <asp:ServiceReference Path="~/WebServices/PortalWebService.asmx" />
            </Services>
        </ajaxtoolkit:toolkitscriptmanager>

当我尝试使用javascript调用webservice方法并且我的auth票仍然有效时,一切都是hunky dory,我的回复完全没问题。但是如果在进行javascript调用时我的身份验证票已过期,则服务器会弹出一个窗口,要求我进行身份验证。

服务器正在响应401基本身份验证请求!当你输入有效信息时,除了再次弹出窗口之外什么都不做。

Asking for basic auth when it shouldn't be

我已经在我的服务方法调用上附加了一个错误处理程序,并在提示用户提供不起作用的窗口后触发它。我该如何解决?它需要向错误处理程序报告错误或重定向用户(这不太可能发生)。

1 个答案:

答案 0 :(得分:0)

通过在IIS中禁用基本身份验证和摘要身份验证来修复此问题(已启用表单身份验证)。一旦我这样做,它使用具有正确行为的表单身份验证。