一:在本机直接运行时出错

使用WCF写了一个小程序测试一下它的功能在运行时报错。“添加服务失败。服务元数据可能无法访问。请确保服务正在运行并且正在公开元数据。”

如下图所示:

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>
View Code

相关文章: