WCF - 远程服务器返回错误:404

时间:2013-05-20 18:20:42

标签: asp.net wcf

我是WCF的新手,我正在尝试在另一台机器上托管我的第一个WCF应用程序。它可以在IIS的本地计算机上运行。我托管在远程机器上,我能够查看WSDL。我也启用了匿名身份验证。

问题是当我尝试使用SOAP UI测试我的.svc时,它错误地说

加载错误[http://domain.com/folder/wcfservice.svc?xsd=xsd0]:java.io.IOException:尝试从封闭流中读取

所以,我尝试使用svcutil命令,并且错误输出

  
    

尝试使用WS-Metadata Exchange从'http://domain.com/folder/wcfService.svc?wsdl'下载元数据或     迪斯科。错误:无法从http获取元数据:     //domain.com/folder/wcfService.svc?wsdl WS-Metadata Exchange错误     URI:http://domain.com/folder/wcfService.svc?wsdl元数据包含一个     无法解决的参考:'http:     //domain.com/folder/wcfService.svc?wsdl”。

  
     

http://domain.com/folder/wcfService.svc?wsdl上没有端点可以接受   信息。这通常是由错误的地址或SOAP操作引起的。   有关更多详细信息,请参阅InnerException(如果存在)。

     

远程服务器返回错误:(404)Not Found.HTTP GET Error       URI:http://domain.com/folder/wcfService.svc?wsdl文档已被理解,但无法处理。 WSDL文档   包含无法解析的链接。有一个错误   下载'http://domain.com/folder/wcfService.svc?xsd = xsd0'。该   底层连接已关闭:a上发生意外错误   接收。无法从传输连接中读取数据:   远程主机强行关闭现有连接。

这是我的webconfig供您参考。

    <?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <behaviors>
       <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
        <behavior name="defaultBehaviors">
          <serviceMetadata httpGetEnabled="true"/>
          <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
          <serviceDebug httpHelpPageEnabled="true" includeExceptionDetailInFaults="true"/>
          <serviceTimeouts transactionTimeout="10.00:00:00"/>
        </behavior>

      <behavior name="metadataSupport">
        <serviceDebug includeExceptionDetailInFaults="False" />
        <!--Enable WSDL Data Binding-->
        <serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
      </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="basicHttpBinding" scheme="http" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" />    
    <bindings>
      <basicHttpBinding>
        <binding name="wcfservice.SSO"
                 maxBufferSize="2147483647"
                 maxBufferPoolSize="2147483647"
                 maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="32"
                        maxStringContentLength="2147483647"
                        maxArrayLength="2147483647"
                        maxBytesPerRead="4096"
                        maxNameTableCharCount="16384" />
          <security mode="None">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="wcfservice.wcfservice_Service" behaviorConfiguration="defaultBehaviors">
        <host>
          <baseAddresses>   
            <add baseAddress="http://domain.com/folder/wcfService.svc" />   
          </baseAddresses>  
        </host>
        <endpoint address="xml"
                  binding="basicHttpBinding"
                  bindingConfiguration="wcfservice.SSO"
                  contract="wcfservice.Iwcfservice" />
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange">
        </endpoint>
      </service>
    </services>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <directoryBrowse enabled="true"/>
  </system.webServer>
</configuration>

我认为值得一提的是,这个WCF应用程序是在VS2012中创建的,我只是在部署后将webframe中的targetframework更改为4.0。

有人可以帮忙解决导致错误的原因吗?我在web.config中遗漏了什么吗?

0 个答案:

没有答案