代码之家  ›  专栏  ›  技术社区  ›  Greg Olmstead

WCF Web服务-同一服务器上的多跳模拟

  •  3
  • Greg Olmstead  · 技术社区  · 14 年前

    我有3个web服务,都位于同一台服务器上。

    我的客户机调用服务A,它模拟客户机调用服务B,一切正常。

    现在,我想模拟服务B的调用者(这是我的用户名)来调用服务C。当我使用与以前相同的技术(AllowedImpersonationLevel=Impersonate,user.Impersonate())时,用户不会被传递到服务C。相反,服务C将该用户视为在IIS中运行它的用户(这是一个UPN,而不是标准的网络服务帐户)。

    3 回复  |  直到 14 年前
        1
  •  0
  •   Kristen    14 年前

        2
  •  0
  •   evanl    14 年前

    您可以尝试在服务C上打开ASP.Net兼容性

    在Web.cofig中

    <system.web>
       <identity impersonate="true"/>
       <authentication mode="Windows"/>
    </system.web>
    <system.serviceModel>
       <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    </system.serviceModel>
    

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Service : IService
    {
        public string ExecuteRequest(string xmlRequest)
        {
            IRequestManager requestManager = new RequestManager();
            return requestManager.ProcessRequest(xmlRequest);
        }
    
    }
    
        3
  •  0
  •   Mahol25    14 年前

    我本以为必须使用授权,因为您两次跨越流程边界。你试过模拟级别的委派吗?