WCF中的EndpointNotFoundException

时间:2013-12-14 13:56:00

标签: .net asp.net-mvc wcf exception wcf-binding

我一直盯着web.config方式,你们好好看一下吗?

正在运行service.Endpoint.Address.ToString()会给我预期的结果:http://localhost:2867/Service1.svchttp://localhost:2867/Service1.svc?wsdl为我提供了我需要的所有方法。

如果您需要更多信息/代码,我很乐意添加它。

感谢您一看!


错误

http://localhost:2867/Service1.svc没有可以接受该消息的端点。这通常是由不正确的地址或SOAP操作引起的。

客户端配置

<?xml version="1.0" encoding="utf-8"?>    
<configuration>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>    
  <system.web>        
    <httpRuntime targetFramework="4.5" />        
    <compilation debug="true" targetFramework="4.5" />    
    <pages>
      <namespaces>
       ...
      </namespaces>
    </pages>
  </system.web>    
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />         
  <handlers>
  ...    
  </handlers>
  </system.webServer>    
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IService1" />
        <binding name="Identity Management WebserviceSoap">
          <security mode="Transport" />
        </binding>
        <binding name="Identity Management WebserviceSoap1" />
      </basicHttpBinding>
    </bindings>    
    <client>
      <endpoint address="http://localhost:2867/Service1.svc" binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReferenceCDP.IService1"
        name="BasicHttpBinding_IService1" />
    </client>
  </system.serviceModel>
</configuration>

服务器配置

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>

  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>

  <system.web>

    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>

    <httpRuntime targetFramework="4.0" />
    <authorization>
      <allow users="?" />
    </authorization>

  </system.web>

  <system.serviceModel>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

    <client>
      <!--<endpoint address="https://services.howest.be/Howest.Identity.Web.Service/v1.1/facade.asmx" binding="basicHttpBinding" bindingConfiguration="Identity Management WebserviceSoap" contract="BamaFlex.IdentityManagementWebserviceSoap" name="Identity Management WebserviceSoap" />-->
    </client>

    <services>
      <service name="CollectiveDistributedPolling.Service1" behaviorConfiguration="ServiceBehavior">
        <endpoint address="" binding="webHttpBinding" behaviorConfiguration="json" contract="CollectiveDistributedPolling.IService1"></endpoint>        
      </service>
    </services>

    <behaviors>
      <endpointBehaviors>
        <behavior name="json">
          <enableWebScript />
        </behavior>
      </endpointBehaviors>


      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

    <bindings>
      <basicHttpBinding>
        <binding name="Identity Management WebserviceSoap">
          <security mode="Transport" />
        </binding>
      </basicHttpBinding>

      <webHttpBinding>
        <binding>
          <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="64" maxNameTableCharCount="2147483647" />
          <security mode="None" />
        </binding>
      </webHttpBinding>
    </bindings>

  </system.serviceModel>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />

    <!--Toegevoegd omdat de browser anders nx ontvangt (GET)-->
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
      </customHeaders>
    </httpProtocol>

    <directoryBrowse enabled="true" />

  </system.webServer>

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

</configuration>

修改

<services>
      <service name="CollectiveDistributedPolling.Service1" behaviorConfiguration="ServiceBehavior">
        <endpoint address="http://localhost:2867/Service1.svc" binding="webHttpBinding" behaviorConfiguration="json" contract="CollectiveDistributedPolling.IService1"></endpoint>        
      </service>
    </services>

2 个答案:

答案 0 :(得分:4)

要检查两件事:

  1. 您的客户正在使用basicHttpBinding,而您的服务正在使用webHttpBinding,因此您的绑定不匹配。

  2. 您的客户正在引用ServiceReferenceCDP.IService1作为合同,而您的服务正在使用CollectiveDistributedPolling.IService1 - 这些不一样,即使代码相同。

  3. 记住WCF的ABCs - 地址,绑定和合同。客户端必须匹配要连接的服务。

答案 1 :(得分:1)

您的服务器端配置地址属性仅包含空字符串,请在其中指定地址:http://localhost:2867/Service1.svc

(请不要使用开发服务器。)