c# - 没有接口(interface)的 ChannelFactory<T>

标签 c# wcf soap

我目前正在尝试创建一个调用 WCF SOAP 服务的 REST 代理,我一直在尝试建立一个 channel 来发送消息。我知道我需要使用 ChannelFactory,但我没有该服务的接口(interface)。我可以传递默认值吗?有没有其他的方式来打包消息?

当我说消息时,我指的是来自 ServiceModels.Channels.Message 的消息。

我对此很陌生,所以任何帮助将不胜感激。

最佳答案

您可以 generate a WCF client通过以下两种方式之一从 WSDL 服务契约(Contract)中获取:

任何一种方法都会生成与服务契约公开的类型相对应的 .NET 类以及 WCF client proxy class ,您可以使用它来调用服务操作:

try
{
    var client = new MyServiceClient();
    client.DoSomething();
    client.Close();
}
catch
{
    if (client != null)
    {
         client.Abort();
    }
}

如果您更喜欢使用较低级别的 ChannelFactory API , 你应该使用生成的 IClientChannel界面改为:

try
{
    var factory = new ChannelFactory<MyServiceChannel>();
    var client = factory.CreateChannel();
    client.DoSomething();
    client.Close();
}
catch
{
    if (client != null)
    {
         client.Abort();
    }
}

关于c# - 没有接口(interface)的 ChannelFactory<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9367139/

相关文章:

c# - 如何解决 Image 需要保持其流打开的事实

响应消息的 WCF charset=utf-8 与绑定(bind)的内容类型不匹配 (application/soap+xml; charset=utf-8)

c# - WCF 服务在每次调用时实例化

c# - 为什么 Visual Studio 2012 生成的 Web 服务代理类以小写字母开头?

r - 在 R 中,如果我有 Web 服务的 WSDL 描述,我该如何调用它? (消费网络服务)

c# - Xamarin.Forms 中的自定义控件从零开始

c# - 如何从 UI.InputField 获取文本?

c# - 通过缓存提高SQL Server的性能是否可行?

c# - 限制每个用户的并发 wcf session 数

grails - 如何将GroovySOAP客户端代码转换为groovy-wslite?