在clientaccesspolicy文件的域节点中,您可以为子域或协议指定通配符,但它看起来不适用于端口。
特别是在开发时,如果所使用的服务托管在第三方上,则从localhost asp.net开发服务器上运行的silverlight应用程序的本地调试版本访问可以正常运行:
<domain uri="*"/>
<domain uri="http://*"/>
<domain uri="http://localhost:1234"/>
(其中1234是具体确定的端口号)
但如果在
形式中指定,它似乎不起作用<domain uri="http://localhost:*"/>
如果有多个使用该服务的开发人员/项目,或者您没有为asp.net开发服务器指定端口,则非常烦人
如果我只是简单地知道格式不正确,或者这是对Silverlight处理clientaccesspolicy的错误还是疏忽,是否有人知道?
答案 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端口,如您已经说明的那样,并且无论开发人员在何处使用该项目,都希望它不需要端口更改。
这不是一个完美的解决方案,因为它总是更好地自动分配而不是项目中的硬设置端口。但这是一个很好的选择。