设为首页 收藏本站
查看: 1149|回复: 0

[经验分享] Silverlight跨域,Silverlight在IIS中部署等问题解决之道

[复制链接]

尚未签到

发表于 2015-8-12 13:14:08 | 显示全部楼层 |阅读模式
           本文是自已在学习silverlight当中遇到的问题及解决方法,记录下来,便于存档。也希望为遇到相同问题的Coder们, 提供一个解决方案的参考。
  一:Silverlight 跨域   
  Silverlight在设计的时候对网络安全方面做了很多考虑,具体可以看Silverlight SDK。
  跨域通信是通过在其他域的根部署使用正确跨域策略文件的 Web 服务,可以在该域中启用基于 Silverlight 的应用程序要调用的 Web 服务。Silverlight 支持两种类型的跨域策略文件。
· Silverlight 跨域策略 (clientaccesspolicy.xml)

· Flash 跨域策略 (crossdomain.xml) 的子集

使用跨域策略文件的跨域通信

   DSC0000.jpg
  通常,如果基于 Silverlight 的应用程序检测到其请求是一个跨域请求,将首先在 Web 服务的应用程序根处查找 Silverlight 跨域策略文件 (clientaccesspolicy.xml)。如果这个请求导致"404 未找到"或其他错误,应用程序将在应用程序根处查找 Flash 跨域策略文件 (crossdomain.xml)。不允许重定向跨域策略文件。此外,跨域策略文件保持对应用程序会话有效。
    现在知道了只要在网站中部署一个跨域策略文件,就可以解决Silverlight跨域请求问题。跨域策略文件要放在哪里?
  注意:跨域策略文件必须也只能放在网站的放置在根目录下。
            clientaccesspolicy.xml配置:
    <?xml version="1.0" encoding="utf-8"?>

<access-policy>

    <cross-domain-access>

        <policy>

            <allow-from>

                <domain uri="*"/>

            </allow-from>

            <grant-to>

                <resource path="/" include-subpaths="true"/>

            </grant-to>

        </policy>

    </cross-domain-access>

  </access-policy>
  crossdomain.xml配置:
<?xml version="1.0"?>

<cross-domain-policy>

<allow-access-from domain="*" />

  </cross-domain-policy>
  
  二:Silverlight IIS 部署
       用silverlight开发的程序,部署到IIS 上,会经常弹出&#8220;Sys.InvalidOperationException: InitializeError error #2104 in control 'Xaml1': 无法下载 Silverlight 应用程序。请查看 Web 服务器设置&#8221;异常。
  出现该异常的原因:silverlight 程序ClientBin目录下的xap 和xaml 为后缀名的文件不被IIS请求识别。
  解决方法: 在IIS中,添加MIME类型。
  MIME 类型
.xaml application/xaml+xml
.xap application/x-silverlight-app
    如仍有问题,请检查IE的配置,放开安全里面的Xaml Active 下载等选项。
   在IIS添加MIME类型,如图所示:
        DSC0001.jpg
     

  三:Silverlight 动态绑定图片
       用Image标签动态绑定异步请求数据时,在每次页面重新加载时,都会出现&#8220;Sys.InvalidOperationException: ImageError error #4001 in control 'Xaml1': AG_E_NETWORK_ERROR&#8221; 异常。
      Image标签绑定形式如下:

<Image x:Name="rect" Stretch="Fill"  Canvas.Left="150" Canvas.Top="130" Source="{Binding ProductImage}" </Image>

     该异常原因:绑定发生在设置DataContext之前,所以Image路径还没有设置成你期望的值,就进行绑定,所以此时Image标签的source 路径是不可用的。
  修改方法码如下:
      在xaml中去掉 Source="{Binding ProductImage}",DataContext绑定数据后,再对Image标签设置绑定值。例如:
<Image x:Name="rect" Stretch="Fill"  Canvas.Left="150" Canvas.Top="130" </Image>


DSC0002.gif DSC0003.gif Code
1 DSC0004.gif private void ResponseReady(IAsyncResult asyncResult)
2         DSC0005.gif {
3 DSC0006.gif             WebRequest request = asyncResult.AsyncState as WebRequest;
4            WebResponse response = request.EndGetResponse(asyncResult);
5            using (Stream responseStream = response.GetResponseStream())
6 DSC0007.gif DSC0008.gif             {
7                DataContractJsonSerializer jsonSerializer =
8                    new DataContractJsonSerializer(typeof(ProductList));
9
10                ProductList productList = jsonSerializer.ReadObject(responseStream) as ProductList;
11                new Thread(() =>
12                {
13                    mygrid.Dispatcher.BeginInvoke(
14                        () =>
15                        {
16                            mygrid.DataContext = productList.Products[0];
17                            Binding binding = new Binding("ProductImage");
18                            rect.SetBinding(Image.SourceProperty, binding);
19 DSC0009.gif                         }
20                     ); }).Start();
21            }
22 DSC00010.gif         }
23  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-97966-1-1.html 上篇帖子: WCF面向服务应用程序系列之十三:托管(Hosting)-IIS托管 下篇帖子: IIS常见问题调试手册
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表