代码改变世界

WCF发布错误及解决方案

2015-04-22 19:48  Yang-Onion  阅读(1854)  评论(0编辑  收藏  举报

 

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

使用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

 

2.4 

“/”应用程序中的服务器错误。


未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.ServiceModel.Activation.HttpModule”。

解决方案:

在命令提示符CMD(管理员方式运行CMD)上打开地址 C:\Windows\Microsoft.NET\Framework\v4.0.30319 然后输入aspnet_regiis.exe -iru 后回车即可,参考下图

 

 

2.5 

“/”应用程序中的服务器错误。


无法激活服务,因为它不支持 ASP.NET 兼容性。已为此应用程序启用了 ASP.NET 兼容性。请在 web.config 中关闭 ASP.NET 兼容性模式,或将 AspNetCompatibilityRequirements 特性添加到服务类型且同时将 RequirementsMode 设置为“Allowed”或“Required”。

 

解决方法:

 将web.config中的

  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/>

修改为

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

即可。

 

三:Service References 和 Web References、BasicHttpBinding和WsHttpBinding的不同点

 

Web References: 主要是添加Web Service引用,基于.NET Framework 2.0。

Service References:为了对.NET Framework 3.0 或 3.5版本上WCF Service Library的支持。

 

BasicHttpBinding:数据明文的通过xml发送

WsHttpBinding:数据被加密发送

 

假如,WCF的绑定方法是WSHttpBinding,那么,如果使用Web References来引用这个WCF服务中话,会不成功,只能用Service References方式引用才会成功;

假如,WCF的绑定方法是BasicHttpBinding,那么,无论使用Web References还是Service References都可以成功调用。

 

 

 

 

 

 

 

home page tracking
NutriSystem Diet