【问题标题】:C# silverlight - WCF callsC# silverlight - WCF 调用
【发布时间】:2011-02-05 20:09:05
【问题描述】:

我有一个 Silverlight 应用程序,它对 WCF 服务有一些调用。 silverlight 和 WCF 都位于本地主机上。当我运行 silverlight 应用程序但在通信异常中调用 WCF 时失败。我从网上了解到,这可能是因为 WCF 和 silverlight 没有在同一个端口上运行,我必须添加 clientaccesspolicy.xml 文件。 但我不明白什么是“域根”我必须在那里找到 xml。 你能告诉我我必须在那里找到xml的路径(在本地主机上)

谢谢!

【问题讨论】:

    标签: c# silverlight wcf clientaccesspolicy.xml


    【解决方案1】:

    “域根”是您托管 Silverlight 应用程序的 HTTP 域的根地址。这有点违反直觉,但请记住,策略文件正在处理跨域脚本问题。

    因此,如果对于其中任何一个:

    http://www.yourdomain.com
    
    http://www.yourdomain.com/app
    
    http://www.yourdomain.com/app1/PageSilverlightNeedsToHit.aspx
    
    http://www.yourdomain.com/app1/Service1.svc
    
    http://www.yourdomain.com/apps/yourapp/folders/services/versions/otherlongnames/
    

    你必须有一个有效的clientaccesspolicy.xml

    http://www.yourdomain.com/clientaccesspolicy.xml
    

    一个简单的测试是从浏览器中访问该 url (http://www.yourdomain.com/clientaccesspolicy.xml) 并确保您获取访问 XML。这将模仿 Silverlight 的行为。

    如果您的主机设置无法做到这一点,请回复。此请求还有其他选项(自定义 iis 处理程序等),但根据您的需要,它们可能会过大。

    【讨论】:

      【解决方案2】:

      我昨天刚刚使用 IIS 托管的 WCF 服务进行了此操作。我将 XML 文件放在 c:\inetpub\wwwroot 中(我想。它在我工作的机器上)。

      如果您不是 IIS 托管的,它可能会有所不同。当我第一次开发我的服务时,我是作为一个自托管的 exe 来开发的。在那种情况下,我没有使用 XML 文件。相反,我在我的自托管 exe 项目中实现了另一个“服务”。该服务自动创建了 XML 文件。我手头没有详细资料。如果到那时您还没有解决问题,我可以在星期一发布更多信息。

      在此期间,请参阅此链接:

      Where to place ClientAccessPolicy.xml for Local WCF Service?

      或者这个:

      How can I get my WCF service's client access policy operation to be accessible from the root?

      【讨论】:

      • 您能发布更多关于自助托管的信息吗?一个单独的 exe 如何在 silverlight 项目中?
      【解决方案3】:

      将 clientaccesspolicy.xml 添加到 Visual Studio 中的 silverlight 托管项目,例如 MyProject.Web。很短,把它放在你应用的 Web.config 附近。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-22
        • 2010-09-12
        • 1970-01-01
        • 1970-01-01
        • 2011-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多