2011-08-12 136 views
1

模擬客戶端到Web服務時,是否需要調用它一次,還是需要多次調用它,每次呼叫客戶基本上。模仿:只呼叫一次或繼續呼叫每個呼叫MVC2 callng - > WCF

client.ClientCredentials.Windows.AllowedImpersonationLevel = 
    System.Security.Principal.TokenImpersonationLevel.Impersonation; 

我在我的控制器過程中多次給我的客戶端打電話。我只打過一次電話。我似乎無法通過我的網站的第一頁,雖然(這個網站是一個MVC2網站)調用我的WCF Web服務。

這裏有點困惑。如果你們有任何幫助,我將不勝感激。謝謝。

回答

1

每個代理(客戶端通道)實例都允許模仿,因此如果爲不同的控制器/操作創建新的代理實例(client),則必須爲每個代理實例配置它。創建實例後,您可以對該實例的服務執行多次調用,並且它將正確模擬客戶端。請注意,您應該爲每個需要與WCF服務通信的MVC操作創建一個新的代理實例。

Btw。你是想模仿原始用戶(訪問你的MVC應用程序的用戶)還是運行AppPool的用戶賬戶來託管MVC應用程序?如果第一種情況是您的情況,您可能會遇到問題,因爲模擬僅限於單個網絡躍點。這意味着用戶可以在託管MVC應用程序的服務器(第一跳)上模擬,但如果WCF服務將在另一個服務器上(第二跳),模擬將不會在那裏工作(因爲單跳限制)。在這種情況下,您需要委派而不是模擬和委派要求正確配置的Kerberos。

+0

請您詳細說明這兩個選擇。這聽起來像我正在做第一個。我的MVC網站運行在一臺服務器上,我需要獲取用戶登錄的用戶AD信息(Windows身份驗證),並使其可以訪問我編寫的WCF服務。讓我查看一下代表團,並配置Kerberos ...如果你能詳細說明,我會很感激。 – SoftwareSavant

+1

僅當您的MVC應用程序在不同的服務器上運行WCF服務時才需要委派。這是更多的管理功能。您只需配置服務器,AD,有時還需要配置客戶端以使用Kerberos和委派。從本文開始:http://technet.microsoft.com/en-us/library/cc780217%28WS.10%29.aspx –