Microsoft WCF 测试客户端错误

Posted

技术标签:

【中文标题】Microsoft WCF 测试客户端错误【英文标题】:Microsoft WCF test client Error 【发布时间】:2015-12-18 22:34:54 【问题描述】:

我是 WCF 服务的新手。我正在浏览一些教程并获得了一个简单的程序并尝试在 C# 中的 WCF 服务应用程序中执行。代码如下所示。

IService1.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace WcfService1

    [ServiceContract]
    public interface IService1
    
        int calculatedays(int day,int month,int year);
        

Service1.svc.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

 namespace WcfService1
 
     public class Service1 : IService1
     
         public int calculatedays(int day, int month, int year)
         
             DateTime dt = new DateTime(year, month, day);
             int datetodays = DateTime.Now.Subtract(dt).Days;
             return datetodays;
           
     

web.config

    <?xml version="1.0"?>
    <configuration>

    <system.web>
    <compilation debug="true" targetFramework="4.0" />
    </system.web>
    <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
   </system.serviceModel>
   <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
  </configuration>

当我运行应用程序时,它给出的错误是

错误:无法从http://localhost:2049/Service1.svc 获取元数据 如果这是您使用的 Windows (R) Communication Foundation 服务 有访问权限,请检查您是否已在以下位置启用元数据发布 指定的地址。如需帮助启用元数据发布,请 请参阅 MSDN 文档 http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata交流 错误 URI:http://localhost:2049/Service1.svc 元数据包含 无法解析的引用: 'http://localhost:2049/Service1.svc'。服务器没有提供 有意义的回复;这可能是由于合同不匹配造成的,a 会话过早关闭或内部服务器错误

【问题讨论】:

Error: Cannot obtain Metadata from WCF service的可能重复 您如何托管 WCF 服务,我们也可以看到该代码 您还没有将接口方法签名设置为也具有 OperationContract 属性... 【参考方案1】:

创建一台主机并在主机程序中添加appconfig文件。然后在appconfig中编写以下代码。

 <?xml version="1.0"?>
    <configuration>

    <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    </system.web>
    <system.serviceModel>
    <services>
      <service name="WcfService1.Service1" behaviorConfiguration="maxBehaviour">
        <endpoint address="WcfService1" binding="netTcpBinding" contract="WcfService1.IService1">
        </endpoint>


        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:2049/"/>
            <add baseAddress="net.tcp://localhost:8090/"/>
          </baseAddresses>
        </host>
      </service>
    </services>
   <behaviors>
      <serviceBehaviors>
        <behavior name="maxBehaviour">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

</configuration>

将Wcfservice1项目的引用添加到这个项目中。创建一个类并编写如下代码

        public static void Main()
        
            using (ServiceHost host = new ServiceHost(typeof(WcfService1.Service1)))
            
                host.Open();
                Console.WriteLine("Started Report Host");
                Console.ReadKey();
            
        

【讨论】:

以上是关于Microsoft WCF 测试客户端错误的主要内容,如果未能解决你的问题,请参考以下文章

Wcf 测试客户端如何在没有 Visual Studio 的情况下使用?

从非 Microsoft 客户端访问 WCF 服务回调

wcf在android客户端帖子上抛出错误

WCF 服务 wsdl 客户端错误

WCF 显示超时错误

测试 WCF 服务的最佳方法是啥?