我有一个WCF服务MyService.svc,托管在IIS 7中。服务配置如下:
<system.serviceModel>
<services>
<service name="MyService">
<endpoint address="" binding="basicHttpBinding" contract="MyPortType"></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="defaultBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
问题是,我的服务不提供自动生成的WSDL(将wsdl添加到服务的URL),尽管事实上我包含了标记
<serviceMetadata httpGetEnabled="true" />
如果我尝试通过SoapUI调用它,服务本身就可以了。当我尝试访问WSDL时,我得到HTTP错误400而没有响应的WSDL。
重要的是要注意我使用.NET 3.5和Visual Studio 2008是出于遗留原因(它是一个旧的应用程序)。使用VS2008中的svcutil.exe通过命令行生成数据协定。当我在VS 2013 / .NET 4.5(使用VS2013中的svcutil.exe重新生成数据协定类)下尝试相同的服务和相同配置时,自动生成的WSDL显示没有问题。
如何在.NET 3.5 / VS2008下运行自动生成的WSDL?
谢谢你, 米甲
答案 0 :(得分:1)
将元数据端点添加到服务
<services>
<service name="MyService">
<endpoint address="" binding="basicHttpBinding" contract="MyPortType"></endpoint>
<endpoint address=”mex” binding=”mexHttpBinding” contract=”IMetadataExchange”/>
</service>
</services>
答案 1 :(得分:0)
如果删除行为名称,则应该将其取出。
<serviceBehaviors>
<behavior name="defaultBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
到
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>