7

在 clientaccesspolicy 文件的域节点中,您可以为子域或协议指定通配符,但它不会显示为端口。

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

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

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

但如果在表格中指定它似乎不起作用

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

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

是否有人知道我是否只是让格式不正确,或者这是否是 Silverlight 处理客户端访问策略的错误或疏忽?

4

2 回答 2

6

您描述的行为符合文档,其中指出:

允许使用三种类型的通配符:

独立的“*”通配符。此选项用于允许访问同一方案的所有域。HTTP 服务将允许所有 HTTP 调用者。HTTPS 服务将允许所有 HTTPS 调用者。

“http://*”文字通配符。此选项明确允许所有 HTTP 调用者,即使这是 HTTPS 服务。

子域通配符。此选项在路径的第一段使用通配符(例如“http://.contoso.com”),允许指定域的所有子域。所以举个例子。http://web.contoso.comhttp://mail.contoso.com将被允许。请注意,不允许使用通配符不作为前缀出现的 uri 路径(例如http: //web..com)

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

因此,端口通配符没有任何意义,当您允许主机和域使用通配符时,这(你是对的)没有任何意义。

于 2010-03-09T09:10:42.760 回答
3

解决方法:

在托管 SL 应用程序的网站的属性下,转到Web选项卡,然后将 Auto-assign Port 更改为Specific Port。这样,您可以在 clientaccesspolicy 文件中设置您的 localhost:1234 端口,如您已经说明的那样,并期望无论什么开发人员也使用该项目,都不需要更改端口。

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

于 2010-08-30T03:29:31.293 回答