模拟:只调用一次或继续调用每个客户端调用 MVC2 调用 -> WCF
Posted
技术标签:
【中文标题】模拟:只调用一次或继续调用每个客户端调用 MVC2 调用 -> WCF【英文标题】:Impersonation: call only once or keep calling per cient call MVC2 callng -> WCF 【发布时间】:2011-08-12 19:31:21 【问题描述】:在模拟客户端到 Web 服务时,我需要调用一次,还是需要调用多次,基本上每次调用客户端。
client.ClientCredentials.Windows.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Impersonation;
在我的控制器过程中,我多次致电我的客户。我只调用一次。我似乎无法通过我网站的第一页(这个网站是 MVC2 网站)调用我的 WCF 网络服务。
这里有点混乱。如果你们能提供任何帮助,我将不胜感激。谢谢。
【问题讨论】:
【参考方案1】:每个代理(客户端通道)实例都允许模拟,因此如果您为不同的控制器/操作创建新的代理实例(client
),则必须为每个代理实例配置它。创建实例后,您可以对该实例上的服务进行多次调用,它将正确模拟客户端。请注意,您应该为每个需要与 WCF 服务通信的 MVC 操作创建一个新的代理实例。
顺便说一句。您是否尝试模拟原始用户(访问您的 MVC 应用程序的用户)或运行 AppPool 托管 MVC 应用程序的用户帐户?如果第一种情况是您的场景,您可能会遇到问题,因为模拟仅限于单个网络跃点。这意味着可以在托管 MVC 应用程序(第一跳)的服务器上模拟用户,但如果 WCF 服务将在另一台服务器(第二跳)上,则模拟将无法在那里工作(因为单跳限制)。在这种情况下,您需要委托而不是模拟,并且委托需要正确配置的 Kerberos。
【讨论】:
您能否进一步详细说明这两个选择。听起来我正在做第一个。我的 MVC 网站在一台服务器上运行,我需要获取他登录时使用的用户 AD 信息(Windows 身份验证),并让我编写的 WCF 服务可以访问它。让我查一下委托,并配置 Kerberos……如果您能详细说明一下,我也将不胜感激。 只有当您的 MVC 应用程序运行在与 WCF 服务不同的服务器上时,才需要委托。它是更多的管理功能。您只需要配置服务器、AD,有时还需要配置客户端以使用 Kerberos 和委派。从这篇文章开始:technet.microsoft.com/en-us/library/cc780217%28WS.10%29.aspx以上是关于模拟:只调用一次或继续调用每个客户端调用 MVC2 调用 -> WCF的主要内容,如果未能解决你的问题,请参考以下文章
在滚动侦听器上调用 asynctask 三次或多次在 listview 上滚动一次
Sphero Connecting:我应该在每个 UIViewController 中调用 setupRobotConnection 和 handleRobotOnline 还是每个应用只调用一次?