我有兩個服務,通過配置文件配置。他們每個人都聽一個http和一個https地址。問題是如何配置端口。如果我配置HTTP端口相同的值和HTTPS端口到另一個值,調試,整個項目我得到了WCF服務主機以下錯誤消息時:WCF端口配置錯誤
狀態:錯誤 System.ServiceModel.AddressAlreadyInUseException: HTTP無法註冊URL https://+:8002/Services/xxxService/ 因爲TCP端口8002正在被另一個應用程序 使用。 ---> System.Net.HttpListenerException:如果我配置了四個端口(HTTP和HTTPS)有不同的價值觀,沒有因爲 它正被另一個進程使用
的 進程無法訪問該文件的https值是在IIS中配置和認證的ssl端口的值,服務調用時出現以下異常(但這兩項服務均在WCF服務主機中啓動):
發生錯誤 HTTP請求至 https://localhost:8000/Services/yyyService/。 這可能是由於以下事實: 服務器證書未在HTTPS 的情況下正確使用HTTP.SYS配置爲 。這也可能是由客戶端和服務器之間的安全綁定 的 不匹配造成的。
如果我將第一個服務配置爲使用SSL端口(443),那麼只會啓動第二個服務(具有「錯誤」https端口的服務)。服務爲先再次出現錯誤信息是:
System.ServiceModel.AddressAlreadyInUseException:因爲TCP端口443正在使用由 另一個應用程序 HTTP不能註冊網址 https://+:443/Services/xxxService/ 。 ---> System.Net.HttpListenerException:因爲 它正在被另一個進程使用
在此之上的 進程無法訪問該文件,我得到一個異常,撥打第二服務時:
將 HTTP請求設置爲 https://localhost/Services/yyyService/時發生錯誤。 這可能是由於以下事實: 服務器證書未在HTTPS 的情況下正確使用HTTP.SYS配置爲 。這也可能是由客戶端和服務器之間的安全綁定 的 不匹配造成的。
當我將兩個服務都配置爲使用https:https:/// 443時,那麼沒有任何東西可以開始。而且我會遇到各種奇怪的異常 - clientcredentials是隻讀的,握手會遇到意想不到的包格式,有關遠程地址等等。
我已經在網絡中配置了這兩個地址。配置如下:
<baseAddresses>
<add baseAddress="http://localhost:port1/Services/xxxService/" />
<add baseAddress="https://localhost:port2/Services/xxxService/" />
</baseAddresses>
[...]
<baseAddresses>
<add baseAddress="http://localhost:port3/Services/yyyService/" />
<add baseAddress="https://localhost:port4/Services/yyyService/" />
</baseAddresses>
我一直在試圖運行這件事情兩天了,所以任何地方將不勝感激。
PS。在Visual Studio中,我將IIS配置爲開發服務器,而不是內置的Visual Studio Web開發服務器。
編輯:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service name="namespace.xxxService"
behaviorConfiguration="default">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/Services/xxxService/" />
<add baseAddress="https://localhost:8001/Services/xxxService/" />
</baseAddresses>
</host>
<endpoint address=""
binding="wsHttpBinding"
bindingConfiguration="defaultWsHttpBinding"
contract="namespace.IxxxService" />
<endpoint address="mex/"
binding="mexHttpBinding"
contract="IMetadataExchange"
bindingConfiguration="" />
</service>
<service name="namespace.yyyService" behaviorConfiguration="default">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8003/Services/yyyService/" />
<add baseAddress="https://localhost:8004/Services/yyyService/" />
</baseAddresses>
</host>
<endpoint address=""
binding="wsHttpBinding"
bindingConfiguration="defaultWsHttpBinding"
contract="namespace.IyyyService" />
<endpoint address="mex/"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<client>
<endpoint address="https://localhost:8001/Services/xxxService/"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IxxxService"
contract="namespace.IxxxService" name="WSHttpBinding_IxxxService" />
<endpoint address="https://localhost:8001/Services/yyyService/"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IyyyService"
contract="namespace.IyyyService" name="WSHttpBinding_IyyyService" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="default">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="MembershipProvider"
membershipProviderName="SqlMembershipProvider" />
</serviceCredentials>
<serviceAuthorization principalPermissionMode="UseAspNetRoles"
roleProviderName="SqlRoleProvider" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="defaultWsHttpBinding">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
<transport clientCredentialType="None" />
</security>
</binding>
<binding name="WSHttpBinding_IyyyService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false" >
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" negotiateServiceCredential="true"
algorithmSuite="Default" establishSecurityContext="true" />
</security>
</binding>
<binding name="WSHttpBinding_IxxxService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" negotiateServiceCredential="true"
algorithmSuite="Default" establishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
您能否發佈您的整個/配置部分?這將是非常有益的 - 謝謝! –
2009-07-06 12:28:36