代码改变世界

控制台程序托管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服务的形式发布出来。代码如下所示

  契约定义

服务契约

 

 服务实现

服务实现

 

  配置文件

 

Code

 

   最后别忘了把你的clientaccesspolicy.xml放在网站根目录下一份

   参考:

    http://www.cnblogs.com/seeker/

   http://www.dotnetcurry.com/(X(1)S(4n021y452hfero55f2en1ciw))/ShowArticle.aspx?ID=208&AspxAutoDetectCookieSupport=1