我有一个在IIS 7.5中托管的WCF服务.我有两台服务器,一台用于测试,一台用于生产.
该服务在测试服务器上运行正常,但在生产服务器上我有以下错误.
当我访问该地址时,http://..../service.svc我可以看到默认页面:
您已创建了一项服务.
要测试此服务,您需要创建一个客户端并使用它来调用该服务.您可以使用命令行中的svcutil.exe工具执行此操作,语法如下:
svcutil.exe http://..../service.svc?wsdl
Run Code Online (Sandbox Code Playgroud)
这将生成配置文件和包含客户端类的代码文件.将这两个文件添加到客户端应用程序,并使用生成的客户端类来调用服务.
但是当我点击wsdl链接时,我无法进入wsdl页面.它将我返回到此默认网页,没有任何错误.我怀疑网络/防火墙授权错误,但有人有这样的经历吗?
测试和生产服务器的所有IIS设置都相同.
谢谢您最好的问候.
小智 18
有同样的问题.我通过将httpsGetEnabled添加到serviceBehaviors>行为来修复它,如下所示:
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
Run Code Online (Sandbox Code Playgroud)
也许它可以帮助别人.不要以为你需要这个提示4年后=)
mar*_*c_s 15
您基本上需要三件事来支持浏览WDL服务的WSDL:
所以你在服务器端的配置可能看起来像这样(加上一些东西):
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MetadataBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MetadataBehavior" name="YourService">
<endpoint address=""
binding="basicHttpBinding"
contract="IYourService" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
点1和2由此处处理:
<serviceMetadata httpGetEnabled="true" />
Run Code Online (Sandbox Code Playgroud)
您需要在标记中引用该服务行为<service>才能使其变为活动状态.
点3(MEX端点)是此部分:
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
Run Code Online (Sandbox Code Playgroud)
对于http,使用mexHttpBinding,和IMetadataExchange合同是用于元数据交换的WCF系统合同.
| 归档时间: |
|
| 查看次数: |
30653 次 |
| 最近记录: |