4

当我使用以下配置运行 WCF 服务时,我想从我的 VS2010 运行 WCF 服务。

<system.serviceModel>
<services>
  <service name="WcfSample.Service1" behaviorConfiguration="servicebehaviour1">
    <endpoint  address ="http://localhost:8080/service1/Service1.svc" contract="WcfSample.IService1" binding="wsHttpBinding"></endpoint>
    <endpoint address="" binding="mexHttpBinding" contract ="IMetadataExchange"></endpoint>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="servicebehaviour1">
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="false"/>
      <!-- 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="false" />-->

我收到如下异常

没有协议绑定与给定地址“http://localhost:8080/service1/Service1.svc”匹配。协议绑定在 IIS 或 WAS 配置中的站点级别进行配置。

如果我想在我给定的地址运行我的 WCF,我应该怎么做。

4

1 回答 1

3

WCF 服务的托管不采用您在配置文件的端点中定义的地址

<endpoint 
      address="http://localhost:8080/service1/Service1.svce"

因此,您反对的上述一个不是正确的,而不是您需要执行以下操作的

您的服务地址是 Web 服务器和虚拟目录加上 SVC 文件名,如下所示

http://servername/vrirualdirectoryname/svcfiename.svc/

您可以定义相对地址,如下所示:

<service name="WcfSample.Service1">
   <endpoint name="" 
             address="ServiceAddress" 
             binding="wsHttpBinding"   
             contract="WcfSample.IService1" />
</service>

所以最后你使用服务的服务地址是

http://servername/vrirualdirectoryname/svcfiename.svc/ServiceAddress

所以像这样你可以做而不是直接指定地址。

笔记 :

上面的代码表明该服务将托管在 IIS 服务器上。

于 2013-01-12T08:49:50.993 回答