Silverlight跨域,Silverlight在IIS中部署等问题解决之道

Silverlight跨域,Silverlight在IIS中部署等问题解决之道,第1张

概述     一:Silverlight跨域                 Silverlight在设计的时候对网络安全方面做了很多考虑,具体可以看Silverlight SDK。 跨域通信是通过在其他域的根部署使用正确跨域策略文件的 Web服务,可以在该域中启用基于 Silverlight的应用程序要调用的 Web服务。Silverlight支持两种类型的跨域策略文件。 · Silverlight     

一:Silverlight跨域  

              Silverlight在设计的时候对网络安全方面做了很多考虑,具体可以看Silverlight SDK

跨域通信是通过在其他域的根部署使用正确跨域策略文件的 Web服务,可以在该域中启用基于 Silverlight的应用程序要调用的 Web服务。Silverlight支持两种类型的跨域策略文件。

· Silverlight 跨域策略 (clIEntaccesspolicy.xml)

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

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

通常,如果基于 Silverlight的应用程序检测到其请求是一个跨域请求,将首先在 Web服务的应用程序根处查找 Silverlight跨域策略文件 (clIEntaccesspolicy.xml)。如果这个请求导致"404未找到"或其他错误,应用程序将在应用程序根处查找 Flash跨域策略文件 (crossdomain.xml)。不允许重定向跨域策略文件。此外,跨域策略文件保持对应用程序会话有效。
   
现在知道了只要在网站中部署一个跨域策略文件,就可以解决Silverlight跨域请求问题。跨域策略文件要放在哪里?

注意:跨域策略文件必须也只能放在网站的放置在根目录下。

          clIEntaccesspolicy.xml配置:

   <?xmlversion="1.0"enCoding="utf-8"?>

<access-policy>

    <cross-domain-access>

        <policy>

            <allow-from>

                <domainuri="*"/>

            </allow-from>

            <grant-to>

                <resourcepath="/"include-subpaths="true"/>

            </grant-to>

        </policy>

    </cross-domain-access>

</access-policy>

crossdomain.xml配置:

<?xmlversion="1.0"?>

<cross-domain-policy>

 <allow-access-fromdomain="*" />

</cross-domain-policy>

       

        二:SilverlightIIS部署

     用silverlight开发的程序,部署到IIS上,会经常d出“Sys.InvalIDOperationException: InitializeError error #2104 in control 'Xaml1':无法下载 Silverlight应用程序。请查看 Web服务器设置”异常。

       出现该异常的原因:silverlight 程序ClIEntBin目录下的xap xaml 为后缀名的文件不被IIS请求识别。

       解决方法: IIS,添加MIME类型。

MIME 类型
.xaml application/xaml+xml
.xap application/x-silverlight-app

  如仍有问题,请检查IE的配置,放开安全里面的Xaml Active 下载等选项。

 在IIS添加MIME类型,如图所示:

    

    

        三:Silverlight动态绑定图片

     用Image标签动态绑定异步请求数据时,在每次页面重新加载时,都会出现“Sys.InvalIDOperationException: ImageError error #4001 in control 'Xaml1': AG_E_NETWORK_ERROR” 异常。

     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>

private   voID  ResponseReady(IAsyncResult asyncResult)
 2

        

{
 3

            WebRequest request 
= asyncResult.AsyncState as WebRequest;
 4

            WebResponse response 
= request.EndGetResponse(asyncResult);
 5

            
using (Stream responseStream = response.GetResponseStream())
 6

            

{
 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

                        }
 
20

                     ); }
).Start();
21

            }

22

        }
总结

以上是内存溢出为你收集整理的Silverlight跨域,Silverlight在IIS中部署等问题解决之道全部内容,希望文章能够帮你解决Silverlight跨域,Silverlight在IIS中部署等问题解决之道所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1063494.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存