Silverlight clientaccesspolicy.xml错误?还是设计?

时间:2010-03-04 14:04:05

标签: silverlight clientaccesspolicy.xml

在clientaccesspolicy文件的域节点中,您可以为子域或协议指定通配符,但它看起来不适用于端口。

特别是在开发时,如果所使用的服务托管在第三方上,则从localhost asp.net开发服务器上运行的silverlight应用程序的本地调试版本访问可以正常运行:

<domain uri="*"/>
<domain uri="http://*"/>
<domain uri="http://localhost:1234"/> 

(其中1234是具体确定的端口号)

但如果在

形式中指定,它似乎不起作用
<domain uri="http://localhost:*"/>

如果有多个使用该服务的开发人员/项目,或者您没有为asp.net开发服务器指定端口,则非常烦人

如果我只是简单地知道格式不正确,或者这是对Silverlight处理clientaccesspolicy的错误还是疏忽,是否有人知道?

2 个答案:

答案 0 :(得分:6)

您描述的行为符合文档,其中声明:

  

通配符有三种类型   允许的:

     

独立的'*'通配符。这个选项   用于允许访问所有域   相同的计划。 HTTP服务   将允许所有HTTP呼叫者。一个HTTPS   服务将允许所有HTTPS呼叫者。

     

“http:// *”文字通配符。这个   选项显式允许所有HTTP   呼叫者,即使这是一个HTTPS   服务。

     

子域通配符。此选项使用   在第一段的通配符   path(“http:// .contoso.com”,for   例子)允许所有子域   指定的域名。所以对于   例。 http://web.contoso.com和   http://mail.contoso.com会   允许。注意一个uri路径在哪里   通配符不会出现   前缀(http://web .com,例如)   是不被允许的。

http://msdn.microsoft.com/en-us/library/cc645032(VS.95).aspx

所以没有任何关于端口的通配符,当你允许通配符用于主机和域时,它(你是对的)没有任何意义。

答案 1 :(得分:3)

解决方法:

在托管SL应用的网站的属性下,转到网络标签,然后将自动分配端口更改为特定端口 。这样,您可以在clientaccesspolicy文件中设置localhost:1234端口,如您已经说明的那样,并且无论开发人员在何处使用该项目,都希望它不需要端口更改。

这不是一个完美的解决方案,因为它总是更好地自动分配而不是项目中的硬设置端口。但这是一个很好的选择。