0

我正在使用 Ninject 在本地环境中注入我的 WCF 客户端并且它工作正常。这就是我实现它的方式:

private static IKernel CreateKernel()
    {
        var kernel = new StandardKernel();

        kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);

        kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

        RegisterServices(kernel);
        return kernel;
    }

在我的RegisterServices(kernel)方法中,我有以下实现:

private static void RegisterServices(IKernel kernel)
    {
    #if DEBUG
        kernel.Bind<MyWCFClient.IMyWCF>().To<MyWCFClient.MyWCFClient>();

    #elif Test_at_server            
        kernel.Bind<MyWCFClient.IMyWCF>().To<MyWCFClient.MyWCFClient>()
              /*.WithConstructorArgument("UserName", Credentials.UserName.UserName = "user")
              .WithConstructorArgument("Password", Credentials.UserName.Password = "password")*/;
    #endif
    }

我想要做的是,当我在服务器中部署我的 Web 应用程序时,ninject 应该用凭据注入 WCf,因为服务器上的 WCF 需要经过身份验证。

4

1 回答 1

1

我已经尝试过了,它对我有用!

#if DEBUG
    kernel.Bind<MyWCFClient.IMyWCF>().To<MyWCFClient.MyWCFClient>();
    #elif Test_at_server
    ClientCredentials Credentials = new ClientCredentials();
    kernel.Bind<MyWCFClient.IMyWCF>().To<MyWCFClient.MyWCFClient>()
        .WithConstructorArgument("UserName", Credentials.UserName.UserName = "username")
       .WithConstructorArgument("Password", Credentials.UserName.Password = "password");
#else
#endif
于 2013-04-18T11:22:42.763 回答