silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight应用程序中添加WCF服务的问题(整理)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

 Silverlight商业应用程序为领域数据服务提供了一个极佳的模板,我们可以快速的建立Silverlight的数据应用。当然我们也可以在之上在添加WCF服务而附加其他的服务调用。不过近日我在使用这个方法时却出现了一个问题,同时发现在进行Silverlight网页调用WCF服务时会出现一点儿异常,这个异常不是那么容易发现的。在Visual studio 调试时仅仅提示产生了运行时错误。如图所示:
@H_772_7@
 Silverlight商业应用程序为领域数据服务提供了一个极佳的模板,我们可以快速的建立Silverlight的数据应用。当然我们也可以在之上在@L_673_2@WCF服务而附加其他的服务调用。不过近日我在使用这个方法时却出现了一个问题,同时发现在进行Silverlight网页调用WCF服务时会出现一点儿异常,这个异常不是那么容易发现的。在Visual stu@L_801_7@ 调试时仅仅提示产生了运行时错误。如图所示:

 

Silverlight应用程序中添加WCF服务的问题(整理)

   没有任何可用的信息,所以也很难发现那儿出现了问题,经过再三的试验,才发现了问题的所在,还好微软为WCF服务调试提供了丰富的异常信息[这就是这个软件帝国永久不败的高明之处吧]。

   现在来看一下具体的过程吧,首先新建一个Silverlight商业应用程序,接着我们来@L_673_2@一个WCF服务。在不做任何更改的情况下,我们现在来调试这个工程,现在让你伤心的事情出现了:网页前端显示了上面的提示框。你的程序不能用。。。

   不要着急,既然说到这儿,我们就先来看看WCF服务能否正常运行,在所@L_673_2@的WCF服务(那个以.svc结束的文件)右键选择“在浏览器中查看”,在浏览器的信息中出现了如下的错误

 

Silverlight应用程序中添加WCF服务的问题(整理)

  很显然,调试器认为你的服务无法激活,因为它不支持 ASP.NET 兼容性。微软为你生成了两个解决之道:

      1、在 web.config关闭 ASP.NET 兼容性模式;

      2、AspNetCompatibilityrequirements 特性@L_673_2@到服务类型且同时将 requirementsMode 设置为“Allowed”或“required”。     

   如果你选择第一个方案,非常的不幸,单独的WCF服务调试没有任何的问题,不过整个应用程序还是会产生上面的异常。这是因为Silverlight是运行在ASP.NET 兼容模式下的。

   正确的解决之道:

   现在我们来使用第二个方案:

   1、根据提示将Web.config中的 serviceHosTingEnvironment 配置节中的    aspNetCompatibilityEnabled 设置成true,即启用兼容模式,这个配置节看起来就像下面这样:

    <serviceHosTingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
 2、 接着我们还要在服务的类型中@L_673_2@代码级的兼容性特性AspNetCompatibilityrequirementsAttribue,应用于服务实现类时,此特性可指示该服务是否需要 ASP.NET 兼容模式,
或是否支持为宿主应用程序域 (AppDomain) 启用该兼容模式:
    AspNetCompatibilityrequirementsAttribue,并设置他的requirementsMode为 AspNetCompatibilityrequirementsMode.Allowed
或required之一来启用兼容模式。如下所示:
   

Silverlight应用程序中添加WCF服务的问题(整理)

  恭喜你现在我们能完全正常的使用这个WCF服务了。
    
 
如何@L_673_2@:
 

错误提示:无法激活服务,因为它不支持 ASP.NET 兼容性。已为此应用程序启用了 ASP.NET 兼容性。请在 web.config关闭 ASP.NET 兼容性模式或将 AspNetCompatibilityrequirements 属性@L_673_2@到服务类型且同时将 requirementsMode 设置为“Allowed”或“required”。

解决办法:

修改相应   服务.svc.cs

using System.serviceModel.Activation ;

[AspNetCompatibilityrequirements (requirementsMode=AspNetCompatibilityrequirementsMode.required)]

 

楼上没有试过:

我是直接吧Web.config那个兼容想的关闭了。暂时用下可以,不是彻底的方法

.......

        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHosTingEnvironment aspNetCompatibilityEnabled="false"       multipleSiteBindingsEnabled="true" />       </system.serviceModel> </configuration>

大佬总结

以上是大佬教程为你收集整理的Silverlight应用程序中添加WCF服务的问题(整理)全部内容,希望文章能够帮你解决Silverlight应用程序中添加WCF服务的问题(整理)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。