控制台程序托管WCF服务跨域访问问题解决
2009-05-20 01:36 Amar-Yao 阅读(3393) 评论(3) 编辑 收藏 举报目前大家大多以IIS的托管方式承载WCF服务。对于小型应用这种形式确实提供了便利。但对于大中型应用控制台及Windows
服务形式托管WCF服务是不二的选择,因为往往在启动宿主进程时要进行大量的底层服务的初始化。
控制台应用程序作为宿主时一样有跨域访问的问题。最典型的错误就是在开发环境或部署环境下报以下错误:
Unhandled Error in Silverlight 2 Application 操作过程中出现异常,结果无效。有关异常的详细信息,请查看 InnerException。 位于 System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
位于 SLPADO.EDNASVC.GetUnitInfoCompletedEventArgs.get_Result()
位于 SLPADO.Page.proxy_GetUnitInfoCompleted(Object sender, GetUnitInfoCompletedEventArgs e)
位于 SLPADO.EDNASVC.EDNAWCFClient.OnGetUnitInfoCompleted(Object state)
这是由于Silverlight代码在访问另一个域中(控制台应用)的WCF服务时出的错。我们知道当我们用IIS托管服务时要将clientaccesspolicy.xml这个
跨域访问策略文件放置到网站的根目录下,也就是通过连接http://xxxx/clientaccesspolicy.xml要能访问到这个文件。
但此处的控制台应用需要将此文件以rest服务的形式发布出来。代码如下所示
契约定义
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
服务实现
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
配置文件
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
最后别忘了把你的clientaccesspolicy.xml放在网站根目录下一份
参考:
http://www.cnblogs.com/seeker/