ASP.NET MVC方法被调用两次

时间:2012-06-14 11:28:40

标签: ajax asp.net-mvc forms-authentication

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

在使用某些版本的Safari之前我们已经看到过这种行为,而且它与身份验证有关。使用Windows身份验证时,如果IIS中的身份验证属性设置为Negotiate和NTLM,则会为每个身份调用一次ajax调用。解决这个问题的方法是删除一个(我想我们只是把它当作NTLM)。事实并非如此,因为我们在此处使用表单身份验证。

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

我们无法在任何成功的情况下重现这一点(它很少在客户端机器上发生),并且正在寻找任何一般的陷阱。

1 个答案:

答案 0 :(得分:0)

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

此问题仅出现在safari的某些版本中。