C#托管应用程序的方法,在客户端应用程序中变成类

时间:2017-09-06 18:24:47

标签: c# wcf

我一直在尝试创建一个可以通过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设置需要什么才能让它像以前一样工作?

2 个答案:

答案 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)

原来我在其他地方发现了这个问题。 我将客户端服务引用配置为“始终生成消息合同” 取消选中此项并更新服务引用可解决此问题。

我在这里找到了解决方案。 https://social.msdn.microsoft.com/Forums/en-US/b9655eeb-cdbb-4703-87d8-00deac340173/add-service-reference-creates-message-contracts-requestresponse-objects-with-always-generate?forum=wcf