我是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中遗漏了什么吗?