2012-06-14 112 views
1

我們有一個被調用兩次的控制器方法。第一次被調用時,我們得到正確的參數,第二次被調用時我們沒有參數,MVC引擎拋出異常,因爲方法的參數不能爲空。ASP.NET MVC方法被調用兩次

在使用某些版本的Safari時,我們已經看到過這種行爲,並且它與身份驗證有關。如果IIS中的身份驗證屬性設置爲Negotiate和NTLM,則使用Windows身份驗證時,每次都會發送一次ajax調用。解決這個問題的辦法是刪除一個(我認爲我們只是把它作爲NTLM)。這不是我們在這裏使用表單身份驗證的情況。

當調用WCF方法返回派生類型並且未在父類上使用KnownType屬性時,我們也看到了類似的行爲。

我們不能在任何成功的情況下重現(它在客戶機上很少發生)並且正在尋找任何一般的陷阱。

+2

您能否顯示執行AJAX請求的調用JavaScript代碼? –

+0

標準jquery ajax請求..(現在還沒有在我面前的代碼) –

+0

你可以繼續前進,並在你面前的代碼,並張貼在這裏嗎? –

回答

0

調用兩次被調用的原因是由於Safari在使用IIS下的Windows身份驗證時出現錯誤。轉到您網站的身份驗證設置。右鍵單擊Windows身份驗證,選擇提供程序並刪除協商,從而使NTLM正常工作。我沒有測試過Kerberos。

此問題只出現在Safari的某些版本中。

+0

隨機從未來,但在您的第一個問題,你說你使用表單身份驗證,但你的答案地址Windows身份驗證。這是否意味着IIS Windows身份驗證可以影響表單身份驗證。我只將問題跟蹤到IE8,但由於它不影響用戶,我沒有花費大量資源。發生,看到我的「收藏」問題清單,並且這個人有一個答案。您對錶單身份驗證的任何其他見解都會受到歡迎。 – Tommy

+0

@Tommy沒有互動,我知道在IIS中的窗體和Windows身份驗證之間。抱歉。 –