在我正在进行的项目中,我需要调用webservices(asmx)。我想使用wcf并使用channelfactory(无添加服务参考)来调用它们。
有些人可能有很多接口(合同)。
是否有端到端示例如何操作?
var service=ChannelFactory<?>... How do I get the webserviceContract.
当然,这必须是能够调用Web服务(asmx)的常见方案
感谢您的时间
答案 0 :(得分:1)
要扩展我的注释,您应该能够创建一个接口,该接口的方法与asmx服务中的Web服务方法相匹配。例如:
网络服务方法
string GetMessage()
void SendMessage(string message)
int AddNumbers(int x, int y)
服务合同
[ServiceContract]
public interface IServiceName
{
[OperationContract]
string GetMessage();
[OperationContract]
void SendMessage(string message);
[OperationContract]
int AddNumbers(int x, int y)
}
<强>的ChannelFactory 强>
ChannelFactory<IServiceName> serviceFactory =
new ChannelFactory<IServiceName>(new BasicHttpBinding(),
"http://www.services.com/Service.asmx");
不是100%确定这会有效,但很容易尝试。此外,您可能希望在服务合同([ServiceContract(Namespace = "somenamespace")]
)上设置命名空间以匹配旧的asmx服务,否则可能无法处理消息。