2011-05-18 53 views
0

我有一个使用IIS7在防火墙后部署的Silverlight应用程序,我想URL重写一个公共URL来访问它。所以http://someurl.com将改写为http://internalserver/Default.aspx,这是我怎么设置规则:Silverlight和URL重写 - 他们玩的很好吗?

<rewrite> 
     <rules> 
      <rule name="WebSite_InboundRule" patternSyntax="Wildcard" stopProcessing="true"> 
       <match url="*" /> 
       <action type="Rewrite" url="http://internalserver/Default.aspx" appendQueryString="false" /> 
       <conditions logicalGrouping="MatchAny" /> 
      </rule> 
     </rules> 
    </rewrite> 

此时(在ASPX包装改变一些相对路径,以绝对的)之后,浏览器获取到Default.aspx页面从http://someurl.com ,但是这个页面是空白的,Silverlight.js文件是Fiddler显示下载的最后一个东西。右键单击页面会给我Silverlight上下文菜单,所以我猜测Silverlight插件加载正常,但由于某些原因无法下载XAP文件。

对此非常感谢。

+1

你的xap url是什么样的?看看重写规则,它看起来像将所有传入的URL重写到http://internalserver/Default.aspx,包括请求xap。 – Denis 2011-05-18 23:47:14

回答

0

问题是您正在将所有入站网址(包括像http://someurl.com/MySilverlightApp.xap这样的网址)重写为http://internalserver/Default.aspx。由于这不会返回有效的XAP文件,因此您的Silverlight应用程序将无法加载。您需要添加一条规则,将XAP文件的请求重定向到这些XAP文件的适当内部位置。

+0

我明白了,所以重写URL应该是'http:// internalserver/{R:0}'或类似的东西?在这种情况下,我希望http://someurl.com后面的所有内容都附加到http:// internalserver。 – Gady 2011-05-19 18:31:19

+0

其实我不确定我以前的评论是否准确。请参阅我对Denis在问题意见中发表的评论以进行澄清。 – Gady 2011-05-19 19:41:42