我有一个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都在本地运行。
谢谢!
答案 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>
请注意我的合同已经消失,希望有帮助=)