当模拟客户端到Web服务时,我是否需要调用一次,或者我需要多次调用它,每次我基本上都调用客户端。
client.ClientCredentials.Windows.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Impersonation;
我在控制器的过程中多次给我的客户打电话。我只打电话一次。我似乎无法通过我的网站的第一页(这个网站是一个MVC2网站)调用我的WCF网络服务。
这里有点困惑。如果你们有任何帮助我会非常感激。感谢。
答案 0 :(得分:1)
每个代理(客户端通道)实例允许模拟,因此如果为不同的控制器/操作创建新的代理实例(client
),则必须为每个代理实例配置它。创建实例后,您可以对该实例上的服务进行多次调用,并且它将正确模拟客户端。请注意,您应为每个需要与WCF服务通信的MVC操作创建新的代理实例。
顺便说一下。您是否正在尝试模拟原始用户(访问MVC应用程序的用户)或运行承载MVC应用程序的AppPool的用户帐户?如果第一种情况是您的方案,则可能会出现问题,因为模拟仅限于单个网络跃点。这意味着用户可以在托管MVC应用程序的服务器上进行模拟(第一跳),但如果WCF服务将在另一台服务器上(第二跳),则模拟将无法在那里工作(因为单跳限制)。在这种情况下,您需要委派而不是模拟,委派需要正确配置Kerberos。