在IIS中托管wcf服务时遇到问题?

时间:2009-08-26 06:33:23

标签: wcf

我开发了一个wcf服务,我已经在IIS中托管了它,svc文件如下:

<%@ ServiceHost Language="C#" Debug="true" Service="ServiceImplemetation.HelloService" %>

和web.config文件的system.servicemodel部分如下:

<system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior name="MetadataBehavior">
        <serviceMetadata httpGetEnabled="true" />
      </behavior>
      <behavior name="WebApplication1.Service1Behavior">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
      <behavior name="WebApplication1.MyHelloBehavior">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <services>
     <service name="ServiceImplemetation.HelloService"
              behaviorConfiguration="MetadataBehavior">
        <endpoint address="" 
                  binding="basicHttpBinding" 
                  contract="ServiceContracts.IHello" />
        <endpoint address="mex" 
                  binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
           <baseAddresses>

服务运行正常,现在我创建了一个Web客户端来使用该服务,并编写了web.config文件的cleint部分,如下所示:

<system.serviceModel>
  <behaviors>
    <endpointBehaviors>
      <behavior name="wsServiceBehaviour">
         <dataContractSerializer maxItemsInObjectGraph="6553600"/>
      </behavior>
    </endpointBehaviors>
  </behaviors>
  <client>
    <endpoint address="http://localhost:8379/HelloService/" 
              binding="basicHttpBinding" 
              behaviorConfiguration="wsServiceBehaviour" 
              contract="ServiceContracts.IHello" 
              name="BasicHttpBinding_IIHello" />
  </client>
</system.serviceModel> 

现在,当我访问此服务时,我收到以下错误:

无法建立连接,因为目标计算机主动拒绝了它127.0.0.1:8379

我猜这是一个错误的地址问题,但我不知道错误在哪里...... 有人可以看看这个问题...

2 个答案:

答案 0 :(得分:1)

如果您在IIS中托管,则无法使用自己的基本地址 - 您的服务URL将是保存SVC文件的虚拟目录的URL,加上SVC文件以及服务端点上的任何相对地址。

在你的那个,你应该连接到:

http://myserver/MyVirtualDirectory/MyService.svc/

如果使用IIS来托管WCF服务,那么system.serviceModel部分(遗憾地省略了)中的任何已配置的“基地址”都将毫无用处。

马克

答案 1 :(得分:0)

通常,IIS配置为在端口80上运行而不在端口8379上运行。我认为这是问题所在。