我的服务可以使用正常的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