• WCF发布错误及解决方案


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

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

    如下图所示:

    查了下资料把它解决了,记录一下。

    解决方法:

     将web.config中的

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

    修改为

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

    即可。

       

    二:发布到IIS出错

    2.1 IIS7  不支持svc的MIME类型

    解决方案

    开始->所有程序->附件->CMD->右键“用管理员方式”打开,进入以下目录C:WindowsMicrosoft.NETFrameworkv3.0Windows 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:WindowsMicrosoft.NETFrameworkv4.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:WindowsMicrosoft.NETFrameworkv4.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都可以成功调用。

     

  • 相关阅读:
    Flutter 卡在 package get 的解决办法
    使用datepicker和uploadify的冲突解决(IE双击才能打开附件上传对话框)
    WINDOWS SERVER IE使用FLASH PLAYER的方法
    WAMP虚拟目录的设置
    手机平板等移动端适配跳转URL的js代码
    Eclipse几个版本号的区别
    Eclipse IDE for Java EE Developers 与 Eclipse Classic(Eclipse Standard)区别
    给flash添加A链接
    如何用CSS实现在新窗口打开链接?
    远程桌面不能连接,提示awgina.dll取代错误的解决办法
  • 原文地址:https://www.cnblogs.com/Yang2012/p/4448482.html
Copyright © 2020-2023  润新知