我一直在尝试创建一个可以通过WCF从其他正在运行的应用程序接收信息的应用程序。 我在单独的类中设置了void方法,创建了接口并托管了服务。
在我的主机应用程序中,我有以下方法。
public Class ReceivingMethods : IReceivingMethods
{
Public void HelloWorld(string text)
{
MessageBox.Show(text);
}
}
和
[ServiceContract]
interface iReceivingMethods
{
[OperationContract]
void HelloWorld(string text);
}
在客户端,我想这样做:
HostService client = new HostService();
client.HelloWorld("Hello World");
client.close();
但它不起作用,而是我必须这样做。
HostService client = new HostService();
HelloWorld hi = new HelloWorld();
hi.text = "Hello World";
client.HelloWorld(hi);
client.close();
我之前在应用程序/ ASP组合中使用它,但在此应用程序中没有,我发现这两个应用程序之间的设置没有任何区别。
有人能告诉我WCF设置需要什么才能让它像以前一样工作?
答案 0 :(得分:0)
HostService client = new HostService();
您没有提到要使用的端点或类对象。通常,servicehost类必须创建特定端点的对象,如下所示。
using(System.ServiceModel.ServiceHost host =
new System.ServiceModel.ServiceHost(typeof(ReceivingMethodsnamespace.ReceivingMethods )))
{
host.Open();
Console.WriteLine("Host started @ " + DateTime.Now.ToString());
Console.ReadLine();
}
通常,hostservice必须创建一个实现servicecontract接口的类的对象(AddressBindingContract文件的servicename)
答案 1 :(得分:0)
原来我在其他地方发现了这个问题。 我将客户端服务引用配置为“始终生成消息合同” 取消选中此项并更新服务引用可解决此问题。