Wpf中的Wcf缺少服务,但有Iservice

本文关键字:但有 Iservice 服务 中的 Wcf Wpf | 更新日期: 2023-09-27 18:22:07

WCF文件。

namespace DatabaseTransferViaWcf
{
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        int generateId();
    }
}

相应的文件。

namespace DatabaseTransferViaWcf
{
     public class Service1 : IService1
     {
         public int generateId()
         {
             return 5700 ;
         }
    }
}

我将它们作为一个名为"SendRecieveData"的服务引用添加到我的WPF项目中。

我是如何使用它的。

public partial class Transfer : Window
{
    private void button9_Click(object sender, RoutedEventArgs e)
    {
        ServiceHost host = null; 
        try
        {
            using (ServiceHost host = new ServiceHost(typeof(SendRecieveData.Service1)))
            {
                host.Open();
                Console.WriteLine("The service is ready.");
                Console.WriteLine("Press <enter /> to terminate service.");
                Console.ReadLine();
            }
            wcfHostId = wcf.generateId();
            textBox5.Text = "" + wcfHostId;
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error = " + ex.Message);
        } 
    }
}

上面说我错过了Service1的参考资料,但我看过的所有教程和博客都没有更多的步骤。

Wpf中的Wcf缺少服务,但有Iservice

WPF应用程序是服务的客户端,因此不应该使用ServiceHost类。如果您想在应用程序中托管服务,则使用它。这不是你的情况。在您的情况下,您应该只使用在向项目添加服务引用时自动生成的代理。

您的服务引用没有正确添加。请尝试将其删除,并确保将其命名为Service1,而不是Service1Service或类似名称。

编辑:试试之类的东西

Service1Client service1Client = new service1Client();
Console.WriteLine(service1Client.generateId());

这通常是服务的命名方式。