Silverlight应用程序中添加WCF服务的问题(整理)
2011-12-07 11:51
519 查看
Silverlight商业应用程序为领域数据服务提供了一个极佳的模板,我们可以快速的建立Silverlight的数据应用。当然我们也可以在之上在添加WCF服务而附加其他的服务调用。不过近日我在使用这个方法时却出现了一个问题,同时发现在进行Silverlight网页调用WCF服务时会出现一点儿异常,这个异常不是那么容易发现的。在Visual Studio 调试时仅仅提示产生了运行时错误。如图所示: 没有任何可用的信息,所以也很难发现那儿出现了问题,经过再三的试验,才发现了问题的所在,还好微软为WCF服务调试提供了丰富的异常信息[这就是这个软件帝国永久不败的高明之处吧]。 现在来看一下具体的过程吧,首先新建一个Silverlight商业应用程序,接着我们来添加一个WCF服务。在不做任何更改的情况下,我们现在来调试这个工程,现在让你伤心的事情出现了:网页前端显示了上面的提示框。你的程序不能用。。。 不要着急,既然说到这儿,我们就先来看看WCF服务能否正常运行,在所添加的WCF服务(那个以.svc结束的文件)右键选择“在浏览器中查看”,在浏览器的信息中出现了如下的错误: 很显然,调试器认为你的服务无法激活,因为它不支持 ASP.NET 兼容性。微软为你生成了两个解决之道: 1、在 web.config 中关闭 ASP.NET 兼容性模式; 2、AspNetCompatibilityRequirements 特性添加到服务类型且同时将 RequirementsMode 设置为“Allowed”或“Required”。 如果你选择第一个方案,非常的不幸,单独的WCF服务调试没有任何的问题,不过整个应用程序还是会产生上面的异常。这是因为Silverlight是运行在ASP.NET 兼容模式下的。 正确的解决之道: 现在我们来使用第二个方案: 1、根据提示将Web.config中的 serviceHostingEnvironment 配置节中的 aspNetCompatibilityEnabled 设置成true,即启用兼容模式,这个配置节看起来就像下面这样:
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 2、 接着我们还要在服务的类型中添加代码级的兼容性特性AspNetCompatibilityRequirementsAttribue,应用于服务实现类时,此特性可指示该服务是否需要 ASP.NET 兼容模式,
或是否支持为宿主应用程序域 (AppDomain) 启用该兼容模式:
AspNetCompatibilityRequirementsAttribue,并设置他的RequirementsMode为 AspNetCompatibilityRequirementsMode.Allowed 或Required之一来启用兼容模式。如下所示:
恭喜你现在我们能完全正常的使用这个WCF服务了。如何添加: 错误提示:无法激活服务,因为它不支持 ASP.NET 兼容性。已为此应用程序启用了 ASP.NET 兼容性。请在 web.config 中关闭 ASP.NET 兼容性模式或将 AspNetCompatibilityRequirements 属性添加到服务类型且同时将 RequirementsMode 设置为“Allowed”或“Required”。解决办法:修改相应 服务.svc.csusing 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 Web应用程序与 WCF服务 在 IIS6上 部署问题总结
- 使用 Silverlight 2 和 WCF 构建服务驱动的应用程序
- Silverlight Web应用程序与 WCF服务 在 IIS6上 部署问题总结
- Silverlight访问WCF服务跨域问题
- Silverlight跨域调用WCF服务安全问题
- Silverlight中WCF在添加引用中不能发现的问题
- Silverlight WCF RIA服务(四)如何添加和移除RIA Services Link
- Silverlight访问Window服务为宿主的WCF跨域问题解决方案.
- [转]Silverlight Web应用程序与 WCF服务 在 IIS6上 部署问题总结
- 基于Silverlight应用程序调试WCF服务
- silverlight调WCF服务函数的问题
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- [问题]通过IIS宿主发布WCF服务,客户端添加服务引用出错的解决办法
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- SilverLight商业应用程序开发---学习笔记(2) WCF RIA服务
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- 使用 Silverlight 2 和 WCF 构建服务驱动的应用程序
- Silverlight WCF RIA服务(四)如何添加和移除RIA Services Link
- WCF项目问题2-无法激活服务,因为它需要 ASP.NET 兼容性。没有未此应用程序启用 ASP.NET 兼容性。请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode 属性设置为 Required 以外的值。