在哪里放置clientaccesspolicy?本地银光+ WCF

时间:2011-02-14 20:16:55

标签: c# silverlight wcf

我有一个Silverlight应用程序,里面有一个WCF。当我尝试运行silverlight并在通信异常中调用WCF失败时。我明白我必须添加一个客户端访问策略文件,但我不知道在哪里。 当银光运行时,它会运行这条路径:

SilverlightApplication1\SilverlightApplication1\Bin\Release\SilverlightApplication1TestPage.html

这是来自WCF的web.config:

<services>
        <service behaviorConfiguration="FileUpAndDownload.Web.MapServiceBehavior" name="FileUpAndDownload.Web.MapService">
            <endpoint address="" binding="basicHttpBinding" bindingConfiguration="MapBinding" contract="FileUpAndDownload.Web.IMapService">
                <identity>
                    <dns value="localhost"/>
                </identity>
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        </service>
    </services>

我在哪里放置clientaccesspolicy文件?

注意:silverlight和WCF都在本地运行。

谢谢!

2 个答案:

答案 0 :(得分:0)

将clientaccesspolicy.xml放在应用的根目录中。对于Cassini,它应该是.. \ bin \ release \ clientaccesspolicy.xml,对于IIS,它将它放在.. \ inetpub \ wwwroot \ yourapp \ clientaccesspolicy.xml中。更多关于http://msdn.microsoft.com/en-us/library/cc197955%28v=vs.95%29.aspx

答案 1 :(得分:0)

如果您在本地计算机上运行每个人,我更确定您不需要ClientAccessPolicy。但是如果你这样做 - 把它放在你的根文件夹中。问题可能是您的Web和客户端配置不匹配,或者只是您不需要的web.config中可能导致通信失败的事情。尝试摆脱像你不需要的Mex绑定一样的stff,看看你是否可以用最少的配置工作。

我在一周前看到了另外一个关于你的client.config文件的问题。我可以说我无法使自己的应用程序工作,直到在端点配置中修复了不匹配的合同名称。试试这个:

<endpoint address="" binding="basicHttpBinding" bindingConfiguration="MapBinding" contract="FileUpAndDownload.Web.MapService">
                <identity>
                    <dns value="localhost"/>
                </identity>
            </endpoint>

请注意我的合同已经消失,希望有帮助=)