一:在本机直接运行时出错
使用WCF写了一个小程序测试一下它的功能在运行时报错。“添加服务失败。服务元数据可能无法访问。请确保服务正在运行并且正在公开元数据。”
如下图所示:
查了下资料把它解决了,记录一下。
解决方法:
将web.config中的
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/>
修改为
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
即可。
二:发布到IIS出错
2.1 IIS7 不支持svc的MIME类型
解决方案
开始->所有程序->附件->CMD->右键“用管理员方式”打开,进入以下目录C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\,
,执行ServiceModelReg.exe -i 即可。
2.2 HTTP 错误 500.21 - Internal Server Error 处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
原因:
vs2010默认的是4.0框架,4.0的框架是独立的CLR,和2.0的不同,如果想运行4.0的网站,需要用aspnet_regiis注册4.0框架,然后用4.0的Class池,就可以运行4.0的web项目了.
如何用aspnet_regiis注册4.0框架 :
方法如下,启动cmd (win键+R 启动cmd) ,找到 4.0所在的目录,本人机器目录是 ;
注意:要以管理员的身份运行DOS窗口。
复制目录 C:\Windows\Microsoft.NET\Framework\v4.0.30319
运行 aspnet_regiis.exe -i
安装完成,这时的IIS就可以运行 .net 4.0 部署的网站了.
2.3
这是 Windows© Communication Foundation 服务。
当前已禁用此服务的元数据发布。
如果具有该服务的访问权限,则可以通过完成下列步骤来修改 Web 或应用程序配置文件以便启用元数据发布:
解决方法
web.config中的serviceBehaviors节点下的behavior 节点的name属性设为空字符串
1 <system.serviceModel> 2 <behaviors> 3 <serviceBehaviors> 4 <behavior name=""> 5 <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 --> 6 <serviceMetadata httpGetEnabled="true"/> 7 <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --> 8 <serviceDebug includeExceptionDetailInFaults="false"/> 9 </behavior> 10 </serviceBehaviors> 11 </behaviors> 12 <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 13 </system.serviceModel>