我的服務可以使用正常的WCF調用,但爲了公開元數據(wsdl文件),我必須以正常WCF主機發生故障的方式更改配置。未找到WCF基址
我已經花了無數小時在谷歌試圖解決這個問題,有一個很大的問題是,託管一個網站內的服務從來沒有討論(是的這是不同的)。
要求:
- 奔跑在現有的網站
- 使用會話
- 可與Java和儘可能多的.NET版本越好。
- 揭露的元數據(WSDL將足夠)
編輯:
- IIS不能
- 我使用.NET 4和WCF 4.
在使用這個配置的元數據可以達到(通過wsdl文件),但是當試圖託管正常的wcf端點時,我得到和InvalidOperationException:
無法找到與綁定WSHttpBinding的端點匹配方案http的基地址。註冊的基地址方案是[]。
所以基地址被忽略。
但是當我提供詳細地址的端點(只需在當前地址前面的基地址複製)正常WCF調用做工精細,但在嘗試訪問元數據,我得到以下錯誤時: 沒有協議綁定匹配給定地址'http://localhost:8080/Functionality'。
協議綁定在IIS或WAS配置中的站點級別配置。
這裏是web.config serviceModel部分,我做了一個小測試網站只是爲了測試這個,但它將是很多發佈它在這裏,如果你給我一個下午雖然我會電子郵件它給你。
<system.serviceModel>
<services>
<service behaviorConfiguration="metadataSupport" name="MyStuff.TestWithMetadata">
<endpoint address="Functionality" binding="wsHttpBinding" name="FunctionalityBinding"
contract="MyStuff.ITestWithMetadata" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="metadataSupport">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="metadataSupport">
<!--Navigate with browser to httpGetUrl for the wsdl file-->
<serviceMetadata httpGetEnabled="true" httpGetUrl="Metadata" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false">
<serviceActivations>
<add relativeAddress="TestWithMetadata.svc" service="MyStuff.TestWithMetadata" />
</serviceActivations>
</serviceHostingEnvironment>
</system.serviceModel>
如果有人對如何解決此問題有任何意見,請幫忙。
該死,忘了那個要求,我不能使用IIS!所以我使用默認的網頁develloper。是的,我使用.NET 4和WCF 4. 隨着您的解決方案,它說它確實需要擴展,可能是因爲我沒有使用IIS。 – MrFox 2010-07-14 09:44:18
@MFFOX:是的,serviceHostingEnvironment設置需要IIS7或更高版本。在開發者WebDev中不起作用。 – 2010-07-15 10:30:40