Ajax ASP.NET MVC方法被调用两次

Ajax ASP.NET MVC方法被调用两次,ajax,asp.net-mvc,forms-authentication,Ajax,Asp.net Mvc,Forms Authentication,我们有一个被调用两次的控制器方法。第一次调用它时,我们得到正确的参数,第二次调用它时,我们没有得到任何参数,MVC引擎抛出异常,因为方法的参数不能为null 我们以前在使用某些版本的Safari时见过这种行为,它与身份验证有关。在使用windows身份验证时,如果IIS中的身份验证属性设置为协商和NTLM,则每次将发送一次ajax调用。修复方法是删除一个,我想我们只是将其保留为NTLM。事实并非如此,因为我们在这里使用的是表单身份验证 在调用返回派生类型而不使用父类上的KnownType属性的W

我们有一个被调用两次的控制器方法。第一次调用它时,我们得到正确的参数,第二次调用它时,我们没有得到任何参数,MVC引擎抛出异常,因为方法的参数不能为null

我们以前在使用某些版本的Safari时见过这种行为,它与身份验证有关。在使用windows身份验证时,如果IIS中的身份验证属性设置为协商和NTLM,则每次将发送一次ajax调用。修复方法是删除一个,我想我们只是将其保留为NTLM。事实并非如此,因为我们在这里使用的是表单身份验证

在调用返回派生类型而不使用父类上的KnownType属性的WCF方法时,我们也看到了类似的行为


我们无法成功地重现这种情况—这种情况在客户端计算机上很少发生,并且正在查找任何常见问题。

调用两次的原因是在IIS下使用Windows身份验证时Safari中存在错误。转到网站的身份验证设置。右键单击Windows身份验证,选择提供程序并删除协商,留下运行正常的NTLM。我还没有测试Kerberos


这个问题只出现在safari的某些版本中。

你能展示执行AJAX请求的调用javascript代码吗?标准的jquery AJAX请求..现在还没有拿到我面前的代码,你能继续把代码拿到你面前并发布到这里吗?我现在在家,代码正在工作,但是我们也在返回一个视图的控制器方法上看到了这种行为。它并不总是Ajax。这个控制器操作是如何调用的?超链接?邮局?您在IIS日志中看到了什么?将来会随机出现,但是,在您最初的问题中,您说您正在使用表单身份验证,但您的答案涉及windows身份验证。这是否意味着IIS Windows身份验证会影响表单身份验证。我只追踪到IE8的问题,但因为它不会影响用户,所以我没有在上面花费太多资源。碰巧看到我最喜欢的问题列表,这个问题有答案。如果您对forms auth有任何其他见解,我将非常欢迎。@据我所知,IIS中的forms和windows auth之间没有交互。很抱歉