C# 渠道工厂<;T>;无接口
我目前正在尝试创建一个调用WCFSOAP服务的REST代理,我一直在尝试创建一个通道来发送消息。我知道我需要使用ChannelFactory,但我没有该服务的接口。是否有可以传递的默认值?是否有其他方式来打包信息 当我说message时,我指的是来自ServiceModels.Channels.message的消息C# 渠道工厂<;T>;无接口,c#,wcf,soap,C#,Wcf,Soap,我目前正在尝试创建一个调用WCFSOAP服务的REST代理,我一直在尝试创建一个通道来发送消息。我知道我需要使用ChannelFactory,但我没有该服务的接口。是否有可以传递的默认值?是否有其他方式来打包信息 当我说message时,我指的是来自ServiceModels.Channels.message的消息 我对此非常陌生,因此非常感谢您的帮助。ChannelFactory.CreateChannel创建一个实现提供的接口的对象,并IClientChannel。该接口必须与服务匹配 您不
我对此非常陌生,因此非常感谢您的帮助。
ChannelFactory.CreateChannel
创建一个实现提供的接口的对象,并IClientChannel
。该接口必须与服务匹配
您不需要与服务使用的DLL相同的DLL。您可以创建自己的接口以匹配服务的定义。在ServiceContract
属性中,设置名称和名称空间以匹配服务的名称和名称空间。您可以通过以下两种方式之一从WSDL服务协定中选择:
- 在VisualStudio中使用对话框
- 使用命令行实用程序
try
{
var client = new MyServiceClient();
client.DoSomething();
client.Close();
}
catch
{
if (client != null)
{
client.Abort();
}
}
如果希望使用较低级别,则应使用生成的界面:
try
{
var factory = new ChannelFactory<MyServiceChannel>();
var client = factory.CreateChannel();
client.DoSomething();
client.Close();
}
catch
{
if (client != null)
{
client.Abort();
}
}
试试看
{
var factory=新的ChannelFactory();
var client=factory.CreateChannel();
client.DoSomething();
client.Close();
}
抓住
{
如果(客户端!=null)
{
client.Abort();
}
}
您的Web服务不能两者兼而有之。它是哪一个?这就是为什么它是一个代理,它接受一个rest调用,从rest调用中提取一个参数,将其打包为soap消息,将其发送到soap服务,获取响应,解析它,然后通过我看到的rest服务将其发送回。我误解了“代理”这个词,我以为你指的是客户端代理:)SOAP服务的接口缺失了吗?是的,我想知道是否有一个默认接口可以替代使用?你有服务的WSDL合同吗?有没有办法从WSDL自动生成此接口?@SmashCode是的,使用Visual Studio中的“添加服务引用”对话框或svcutil命令行实用程序。谢谢,我最终从服务器访问了源代码,并复制了所需的接口,但如果我只有wsdl,这也可以解决问题,所以我接受这一点。谢谢。我明白了。我想你在一条评论中说你确实有WSDL合同。无论如何,我很高兴我能帮上忙:)我用了一种奇怪的措辞,恩里科。我确实有WSDL,但现在我有了WSDL和源代码,所以我只使用了源代码而不是WSDL,但是如果我只有WSDL而没有源代码,您的答案就可以了。