找不到类型或命名空间 "MyServiceClient"

The Type or Namespace "MyServiceClient" Could not be Found

我刚刚完成 this wcf duplex tutorial,但在检查我的代码时遇到了这个错误:

Severity    Code    Description   Line
Error   CS0246  The type or namespace name 'MyServiceClient' could not be found (are you missing a using directive or an assembly reference?) ClientSide 15

我的使用似乎一切正常,我已经用谷歌搜索了无数次这个错误,但都没有成功。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;

namespace ClientSide
{
    class Program
    {
        static void Main(string[] args)
        {
            InstanceContext callback = new InstanceContext(new ClientCallback());
            MyServiceClient client = new MyServiceClient(callback);
            client.Open();
            client.Register();
            Console.WriteLine("Press a key to exit");
            Console.ReadKey();
            client.Close();
        }
    }
}

MyServiceClient 是类型还是命名空间?

任何帮助将不胜感激,我正在使用 Visual Studio 2015.

在这种情况下 MyServiceClient 应该是您 "Add Service Reference" 时生成的客户端 class 的名称。

要验证生成的 class 的名称,请在 windows 资源管理器中导航到包含您的服务引用的目录(通常例如 <ProjectName>\Service References\<ServiceReferenceName>,然后打开文件 Reference.cs

在 Reference.cs 内部,查找继承自 System.ServiceModel.ClientBase 的 class。派生的 class 是您应该用来与 Web 服务交互的服务客户端 class。

因此,例如,如果 Reference.cs 包含

public partial class BlahServiceSoapClient : System.ServiceModel.ClientBase<global::MyProject.MyService.BlahServiceSoap>, global::MyProject.MyService.BlahServiceSoap

注意,根据引用,它可能是 System.ServiceModel.ClientBase that you see in the Reference.cs file. Since this question is specifically about the duplex client, you would see System.ServiceModel.DuplexClientBase

的不同子class

那么你的服务 class 会是 BlahServiceSoapClient,所以你会

BlahServiceSoapClient client = new BlahServiceSoapClient(callback);