2011-08-12 125 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 –