WCF异常信息

1、服务“CJ.Demo.Conso.WcfService.EmployeeMngService”有零个应用程序(非基础结构)终结点。这可能是因为未找到应用程序的配置文件,或者在配置文件中未找到与服务名称匹配的服务元素,或者服务元素中未定义终结点。
<service name="CJ.Demo.Conso.WcfService.EmployeeMngService"> 整个类的路径未设置正确

2、IIS部署WCF出现‘当前已禁用此服务的元数据发布’
a)如果用4.0框架需要在IIS中将asp.net版本设置为4.0
1

b )出现提示原因分析:当机器上安装了asp.net 2.0和4.0时,需分别建立应用程序池,并在部署虚拟目录时分属于不同应用程序池。

   1) 建立不同应用池
2
   2) 将4.0虚拟目录应用到4.0的应用程序池
3

//name属性值必须置空

<behavior name="" >
          <!-- 将下列元素添加到服务行为配置中。 -->
          <serviceMetadata httpGetEnabled="true" />
</behavior>

3、没有与给定的地址“”匹配的协议绑定。协议绑定在 IIS 或 WAS 配置中的站点级别配置。
http://blog.csdn.net/jhhja/article/details/6226307
正确的:address单独放置

<baseAddresses>
<add baseAddress="http://localhost:8001/"/>
</baseAddresses>
</host>
<endpoint address="HelloService" binding="wsHttpBinding" contract="WCFService.IHelloService">
</endpoint>

 

4、如果在配置中将“system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled”设置为 true,则需要终结点指定相对地址。如果在终结点上指定相对侦听 URI,则该地址可以是绝对地址。若要解决此问题,请为终结点“http://localhost/Service1.svc”指定相对 URI。

解决方法:

<endpoint address="" //此处只拿出终结点地址部分
将终结点address改为空

原因:

IIS部署的时候,默认会有一个基地址Baseaddress,这个是根据你WCF服务程序的配置生成的。

如果你打算提供完成的地址格式,但是这个完整的地址格式 和Baseaddress 不匹配,比如端口不一样,就会出错。

address换成“”,目的就是使用默认的Baseaddress+“”。避免了你自己设置的和Baseaddress 不匹配的问题。

 

5、不允许使用此方法

服务器端方法定义中UriTemplate的路径和客户端访问的方法不一致,必须如下

服务端: [WebInvoke(UriTemplate = "Add", Method = "POST")]
客户端:var urlTemp = "http://localhost:3721/EmployeeMngService.svc/Add";
UriTemplate 的值必须和svc/Add后面的add相同

6、在 ServiceModel 客户端配置部分中,找不到引用协定“ServiceReference1.IEmployeeMng”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素中找不到与此协定匹配的终结点元素
ServiceReference1。EmployeeMngClient em = new ServiceReference1.EmployeeMngClient(); 通过添加引用使用服务时,客户端endpoint终结点contract的设置,不是和服务器的contract相同,而是设置为和引用服务相关ServiceReference1.IEmploye1eMngaddress也不能设为和服务端address相同,而要设置为address=http://localhost:3721/EmployeeMngService.svc

7、此工厂上启用了手动寻址,因此发送的所有消息都必须进行预寻址。

(这个问题花了我一天时间,网上完全没有解决方案。且服务通过网址访问正常,而通过客户端访问就会出现这个问题,归根结底还是配置问题,暂时不知道为什么这样)

  --报错

    <client>
      <endpoint name="employeeService"
                address
="http://127.0.0.1:3721/employees" 
            
                binding
="webHttpBinding" 
                contract
="Artech.WcfServices.Service.Interface.IEmployees"/>
    </client>

--正常

 <behaviors>
      <endpointBehaviors>
        <behavior name="webBehavior">
          <webHttp/>
        </behavior>
      </endpointBehaviors>      
    </behaviors>
    <client>
      <endpoint name="employeeService"
                address
="http://127.0.0.1:3721/employees" 
                behaviorConfiguration
="webBehavior"
                binding
="webHttpBinding" 
                contract
="Artech.WcfServices.Service.Interface.IEmployees"/>
    </client>

8、部署IIS 返回304.1找不到网页
IIS-->虚拟目录-->应用程序设置-->创建应用程序(执行权限选择【脚本和可执行文件】)、应用程序池选择4.0

原文地址:https://www.cnblogs.com/gossip/p/2380918.html