wcf - 无法在 wcf 示例中的 net.tcp 示例上成功运行 svcutil

标签 wcf net.tcp

我刚刚从 Microsoft WCF 示例中下载并运行了 net.tcp 绑定(bind)示例: WF_WCF_Samples\WCF\Basic\Binding\Net\Tcp\Default\CS

我打开解决方案并重建它,从 server/bin 目录启动服务器,从 client/bin 目录启动客户端,一切正常。

我向 service.cs 添加了一个新函数,然后从 client.cs 调用它。但是visual studio给出了这个错误: 'Microsoft.Samples.NetTcp.CalculatorClient' 不包含 'AddAndDouble' 的定义并且没有扩展方法 'AddAndDouble' 接受类型为 'Microsoft.Samples.NetTcp.CalculatorClient' 的第一个参数可以找到(你是否缺少 using 指令还是汇编引用?)

我假设它给出此错误是因为我的 generatedClient.cs 文件现在已过期,所以我正在尝试运行 svcutil 以生成新的 generatedClient.cs 文件。

但是当我运行 svc util 时,它是这样说的:


c:\Program Files\Microsoft Visual Studio 9.0\VC>svcutil.exe net.tcp://localhost: 9000/服务模型示例/服务/

Microsoft (R) 服务模型元数据工具 [Microsoft (R) Windows (R) Communication Foundation,版本 3.0.4506.648] 版权所有 (c) Microsoft Corporation。保留所有权利。

正在尝试从 'net.tcp://localhost:9000/servicemodelsampl 下载元数据 es/service/' 使用 WS-Metadata Exchange。此 URL 不支持 DISCO。 Microsoft (R) 服务模型元数据工具 [Microsoft (R) Windows (R) Communication Foundation,版本 3.0.4506.648] 版权所有 (c) Microsoft Corporation。保留所有权利。

错误:无法从 net.tcp://localhost:9000/servicemodelsamples/获取元数据 服务/

如果这是您有权访问的 Windows (R) Communication Foundation 服务 ss,请检查您是否已在指定地址启用元数据发布 埃斯。有关启用元数据发布的帮助,请参阅 MSDN 文档 ionic http://go.microsoft.com/fwlink/?LinkId=65455 .

WS-元数据交换错误 URI: net.tcp://localhost:9000/servicemodelsamples/service/

Metadata contains a reference that cannot be resolved: 'net.tcp://localhost:

9000/servicemodelsamples/service/'。

The socket connection was aborted. This could be caused by an error processi

ng 您的消息或远程主机超过接收超时,或未 底层网络资源问题。本地套接字超时为“00:04:59.9687500”。

An existing connection was forcibly closed by the remote host

如果您需要更多帮助,请输入“svcutil/?”

因此,我通过执行以下操作检查服务器是否正在监听: 网络统计/一个 |找到/i "9000" TCP 0.0.0.0:9000 0.0.0.0:0 监听

知道我做错了什么吗?

最佳答案

该示例中的服务未公开任何可由 svcutil 等工具使用的元数据端点。如果您更改服务实现以添加元数据端点(见下文),svcutil 应该可以使用它。

    // Host the service within this EXE console application.
    public static void Main()
    {
        // Create a ServiceHost for the CalculatorService type.
        using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService),
               new Uri("net.tcp://localhost:9000/servicemodelsamples/service")))
        {
            ServiceMetadataBehavior smb = 
                    serviceHost.Description.Behaviors.Find<ServiceMetadataBehavior>();
            if (smb == null) serviceHost.Description.Behaviors.Add(
                               new ServiceMetadataBehavior());
            serviceHost.AddServiceEndpoint(typeof(IMetadataExchange), 
                             MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
            serviceHost.AddServiceEndpoint(typeof(ICalculator), 
                                           new NetTcpBinding(), "");
            // Open the ServiceHost to create listeners
                //  and start listening for messages.
            serviceHost.Open();

            // The service can now be accessed.
            Console.WriteLine("The service is ready.");
            Console.WriteLine("Press <ENTER> to terminate service.");
            Console.WriteLine();
            Console.ReadLine();
        }
    }

关于wcf - 无法在 wcf 示例中的 net.tcp 示例上成功运行 svcutil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7883740/

相关文章:

WCF 消息和数据协定、DTO、域模型和共享程序集

windows-services - 无法连接到 net.tcp ://localhost. .. TCP 错误代码 10061

c# - 我已经实现了 AfterReceiveRequest 方法(来自 IDispatchMessageInspector),并且想要验证请求是否有效?

wcf - Azure WebRole 中的套接字/超时用于与 WorkerRole 中的 WCF 主机进行同步通信

c# - 在 WCF 的添加服务引用中找不到 net.tcp 端点?

.net - 使用 NetTcpBinding 中止套接字连接

WCFExtras XmlComments ...它们在哪里?

wcf - 多个 SVC 引用每个都暴露相同的实体

WCF - 通过 HTTPS 使用 SOAP 服务 - 请求超时