2010-06-14 50 views
1

我已经为我的托管客户端访问策略在我的WCF服务的以下操作:如何让我的WCF服务的客户端访问策略操作可以从根访问?

[OperationContract] 
[WebGet(UriTemplate = "/clientaccesspolicy.xml")] 
XElement RetrieveClientAccessPolicy(); 

public XElement RetrieveClientAccessPolicy() 
{ 
    String policy = @"<?xml version=""1.0"" encoding=""utf-8""?> 
        <access-policy> 
         ... 
        </access-policy>"; 

    return XElement.Parse(policy); 
} 

当我尝试从我的Silverlight应用程序连接到我的服务,我得到一个错误,因为它找不到客户端访问策略。它在这里寻找它:

http://MyServer/clientaccesspolicy.xml

当我在IE浏览器在那里,我得到一个404。不过,我可以找到clientaccesspolicy.xml文件,如果我浏览到这里:

http://MyServer/server/clientaccesspolicy.xml

我怎样才能让我的操作,使客户端访问策略文件从访问根,而不是从该目录(服务器是服务的名称)?

+0

这是用于Silverlight 3还是Silverlight 4?行为因版本而异。 Silverlight 3允许您将ClientAccessPolicy文件托管在专用端口(可以是WCF服务)上,Silverlight 4要求它位于端口80上的根目录中。 – 2010-06-14 23:35:12

回答

1

我猜你没有使用IIS来承载服务,因为你试图通过WCF调用返回clientaccesspolicy.xml。

对于自托管的WCF服务,我认为您将不得不在您的App.config中为您的RetrieveClientAccessPolicy()调用设置单独的服务端点和合同。该服务的基地址为http://localhost,您的主服务的基地址为http://localhost/server

+0

事实上,它是一种自托管服务。我会给你一个镜头。 – 2010-06-14 21:49:03

+0

完美工作。谢谢! – 2010-06-18 18:45:49

相关问题