找不到WCF基址
我的服务可以处理普通的WCF调用,但要公开元数据(wsdl文件),我必须以普通WCF主机失败的方式更改配置 我花了无数个小时在谷歌上试图解决这个问题,最大的问题是,在一个网站内托管服务从来没有被讨论过(是的,这是不同的) 要求:找不到WCF基址,wcf,web,Wcf,Web,我的服务可以处理普通的WCF调用,但要公开元数据(wsdl文件),我必须以普通WCF主机失败的方式更改配置 我花了无数个小时在谷歌上试图解决这个问题,最大的问题是,在一个网站内托管服务从来没有被讨论过(是的,这是不同的) 要求: 在现有网站中运行 使用会话 可使用Java和尽可能多的.net版本操作 公开元数据(wsdl就足够了) 编辑: 无法使用IIS 我正在使用.NET4和WCF4 在此配置中,可以访问元数据(通过wsdl文件),但在尝试承载我获得的正常wcf端点和InvalidOp
- 在现有网站中运行
- 使用会话
- 可使用Java和尽可能多的.net版本操作
- 公开元数据(wsdl就足够了)
- 无法使用IIS
- 我正在使用.NET4和WCF4
<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中托管您的服务时(我根据您的要求“在现有网站中运行”),那么您在配置中的基址是没有意义的-它将根本不被使用 在IIS中托管时,您的服务地址由以下各项确定:
- 您的服务器名
- 可能是端口号
- *.svc文件所在的虚拟目录(可能还有其子目录)
- *.svc文件本身(包括扩展名)
http://MyServer:7777/ExistingWebApp/TestWithMetadata.svc
http://MyServer:7777/ExistingWebApp/MyService
或者你的案子里有什么
您似乎正在使用.NET 4和WCF 4(从未提到过…),在这种情况下,您可以通过修改配置条目来跳过*.svc文件:
<serviceHostingEnvironment multipleSiteBindingsEnabled="false">
<serviceActivations>
<add relativeAddress="MyService" service="MyStuff.TestWithMetadata" />
</serviceActivations>
</serviceHostingEnvironment>
在这种情况下根本不需要*.svc文件。事实证明,我应该使用httpGetUrl链接来获取元数据,而不是.svc文件,这样就可以忽略基址 我还将这些测试内容移到了实际的网站上,并在加载零端点时遇到了大量问题。这是由serviceActivations中的服务引用未设置为完整服务名称(需要包含命名空间)引起的
我接受了marc的回答,因为他确实帮助了我,并防止这个问题出现在未回答的问题中。该死,忘了那个要求,我不能使用IIS!所以我使用默认的web开发者。是的,我正在使用.NET4和WCF4。对于您的解决方案,它说它确实需要扩展,可能是因为我没有使用IIS。@MrFox:是的,serviceHostingEnvironment设置需要IIS7或更高版本。在开发人员WebDev中不起作用。