【问题标题】:How to inject WCF client into ServiceCollection with passing endpoint and credentials as parameters?如何将 WCF 客户端注入 ServiceCollection,并将端点和凭据作为参数传递?
【发布时间】:2020-03-04 01:31:46
【问题描述】:

目前我们正在远离 Castle Windsor 容器,我一直在努力寻找如何将 WCF 客户端注入 .NET Core Startup.cs 中的服务集合的示例。有人知道如何通过传递端点和凭据来做到这一点吗?

以下是温莎城堡集装箱的制作方法:

container.Register(Component.For<IUserServiceV1>()
            .AsWcfClient(new DefaultClientModel
            {
                Endpoint = WcfEndpoint.BoundTo(new BasicHttpsBinding(BasicHttpsSecurityMode.TransportWithMessageCredential) { MaxReceivedMessageSize = 2147483647, ReceiveTimeout = new TimeSpan(0, 0, 5, 0), CloseTimeout = new TimeSpan(0, 0, 5, 0), OpenTimeout = new TimeSpan(0, 0, 5, 0), SendTimeout = new TimeSpan(0, 0, 5, 0) })
                        .At($"{userService.Url}/Services/UserService.svc")
            }
                .Credentials(new Castle.Facilities.WcfIntegration.Behaviors.UserNameCredentials(userService.Username, userService.Password)))
            .LifestyleTransient());

我想使用 .NET Core Microsoft.Extensions.DependencyInjection 来做到这一点。

【问题讨论】:

    标签: wcf asp.net-core dependency-injection inversion-of-control


    【解决方案1】:

    从代码sn-ps来看,服务端的WCF服务是通过BasichttpsBinding以TransportWithMessageCredential安全模式创建的,并使用用户名/密码对客户端进行身份验证。
    据我所知,它与 Asp.net Core 项目不兼容。即在 Asp.net Core 项目中不能正常使用。所以不可行。

    官方仓库。
    https://github.com/dotnet/wcf/issues/8
    我想了解有关服务器端服务的更多详细信息。
    如果有什么可以帮助的,请随时告诉我。

    【讨论】:

    • 感谢您的回答!我们决定暂时离开 Castle Windsor 进行 WCF 服务注入。至于服务器端的细节,恐怕我没有更多。我们只是使用自定义 nuget 包来使用它们
    • 上述DI在Asp.net Core项目中能否正常消费服务?
    • 是的,我可以。我们只是想从温莎城堡搬出来。看起来既困难又不必要
    • 我很困惑。在我看来,这种服务在 Asp.net Core 项目中是无法调用的。您是否尝试过使用 Microsoft WCF Web Service Reference Provider 调用它(添加服务引用),请与我分享客户端自动生成的配置。
    • 很抱歉造成混淆。该项目实际上是针对net461
    猜你喜欢
    • 1970-01-01
    • 2020-07-10
    • 2018-10-14
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 2023-03-28
    • 2019-03-16
    • 1970-01-01
    相关资源
    最近更新 更多