分享

Silverlight数据访问问题

 Jcstone 2012-08-27

Silverlight数据访问问题

分类: Silverlight 165人阅读 评论(0) 收藏 举报

由于微软在Silverlight安全方面的设计,Silverlight是无法以filestream的方式直接从本地读取文件,而只能从服务器上获取数据。在VS2010Silverlight项目里,上半部分为客户端代码,下部分即项目.Web为服务端。

 

对于一个常规的C/S模式,即客户端发出请求,服务端相应请求。Silverlight提供了几种方法,本文主要采用了

(1)WCF Service(图书已经讲的很清楚Ref1:Beginning.Silverlight.4.in.CSharp.Jul.2010)

(2)WebClient(Ref2:http://www./dotnet/silverlight/silverlight_20100702_4963.html)

 

本文应用需求为:客户端输入x,服务端查询文件y,得到z,最后返回z给客户端。

(1)WCF参数传递问题:

      Server.MethodCompleted += new  EventHandler<MethodCompletedEventArgs

                  (Service_GetGeobyIPCompleted);//需要添加事件处理

      Server.MethodAsync(arg);//其中arg即为参数,注意WCF Service定义的方法为Method,客户端调用的是.MethodAsync()。

(2)WCF结果的获取:e.Result();//(MethodCompletedEventArgs )

(3)WCF访问本地文件的问题:可以直接采用绝对地址的方法,如(E:/>a.txt)

        采用相对地址时会出现问题,若直接用“a.txt”,则默认目录为:C:/Program Files/Common Files/Microsoft              

        Shared/DevServer/10.0/a.txt,至于是为什么,Google了半天也不知道。若要采用相对路径,首先要知道当前

        请求的路径:

              String DataPath = System.Web.HttpContext.Current.Request.MapPath("a.txt");

        该句表示在当前请求路径下的a.txt文件。对于VS2010,当前请求路径即为:项目.Web文件夹;若要发布到ISS上,

        请求路径即为:../IIS/项目

(4)Silverlight在VS2010自带的IIS中可以正常运行,但发布后却会报错。报错一般为e.Result,即无法获得结果。这里有

        两个问题,一是文件访问控制(vs和IIS以不同的身份访问),二是WCF的服务地址问题。需要做一下更改:

a.首先设置好IIS(http://hi.baidu.com/forgetmenot_jamon/blog/item/2dee8921b4dd094593580735.html),其中需要在wwwroot目录下放置好clientpolicy文件。

b.在.ClientConfig中更改WCFService的请求地址:<endpoint address="http://localhost/Project/Service.svc",VS默认是在其自带的IIS中的某个端口中。

c.设置wwwroot下的虚拟目录为应用程序。虚拟目录即为VS项目发布到IIS的目录,转化成应用程序后,才可以访问服务。

d.VS2010在发布的时候,只会发布相关的目标文件,并不会发布访问的资源文件,需要手动拷贝到虚拟目录下。问题多的吐血啊...

e.Ok,测试一下,大功告成!耶!

 

(5)Webclient有同样的问题,但是很诡异的是,只需要把虚拟目录设置为应用程序,同时在访问资源的时候相对路径的设置同上。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多