none
silverlight 部署问题 RRS feed

  • 问题

  • 您好~ 我刚刚开始sl的编程,在部署时遇到一些问题。

    我的SL应用程序,在本地可以很好的运行,当我把它部署到公司的服务器上的时候,所有关于数据库读取的部分就不再运行。 同时,当我尝试登录时,它会出现 "The specified resource was not found." 的错误。

    我想问一下,在公司的服务器上,除了SL 客户端的xap文件,还有调用它的网页文件,还有什么文件是必须的呢?对于SL server端,我应该放上什么文件?只放上 dll 文件是否足够呢?

    还有我是否需要修改我的web.config文件呢?

    我还有一个关于sl 弹出 exception 的问题。 我发现在做数据库操作的时候, 比如插入新数据,明明并没有成功,可是SL server端并不报错。 如何能够获取domaineService 的数据库操作异常?我现在用的是笨办法,自己分析数据,然后抛出异常. SL是否有自己的方法呢?

    谢谢~
    Weijia

    2009年12月15日 10:21

答案

  • 这个问题已经解决了,是服务器权限的问题。我们申请的服务器没有 full trust 的权限。

    谢谢大家的回答~!
    • 已标记为答案 shuyu_fr 2010年3月5日 9:51
    2010年3月5日 9:51

全部回复

  • 不好意思,我已经明白在服务器上需要什么文件了。 我现在已经将 SL server 端的 projet 用VS 2008 发布在了公司的服务器上,但是数据依旧读取不出来。 所有绑定的datagrid都是空的,我的数据库并没有改变.

    2009年12月15日 11:49
  • Hi,
      
       检查一下防火墙的设置,同时用Fiddler察看下Request和Response的信息. 
      
       看看有没有返回什么错误.
    2009年12月17日 2:19
  • 你的问题可能是由于跨域访问导致的
    2009年12月17日 4:43
  • Silverlight客户端是如何与服务端通讯的?如果使用WCF的话,检查下列信息:
    1. Silverlight客户端的.config文件中,wcf endpoint的地址(Address) 是不是部署后可用的地址
    2. 服务器IIS是不是支持WCF
    2009年12月17日 4:59
  • 谢谢大家的回答。


    1. 用Fiddler查看,在每次调用查询entity时,都会出现一个关于 System.Security.SecurityException 异常:

    "That assembly does not allow partically trusted caller", (我的系统不是英文或者中文的,这句话是自己翻译的,大概意思应该是这样)。

    2. 关于跨域的问题,我已经在根目录下加入了 clientaccesspolicy.xml 和 crossdomain.xml 。 两个文件内容我是从msdn上面copy下来的。我将自己的SL 项目放在了一个子目录下,在根目录中加入这两个文件,不知道这么放置是否正确?

    3. 防火墙的设置需要注意什么呢?

    我还有一个问题,在我的project中,有两个内容一模一样的 index.html 和 index.aspx 文件,这两个文件都嵌入xap文件。 当我调用html文件时,页面可以正常打开(但是无法和数据库交互),但是当我打开aspx 文件时,网页无法正常打开,报出异常:

    500 Internal Server Error

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator to inform of the time the error occurred and of anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.

    请问有人知道这是什么问题吗?如何解决呢?

    谢谢~

    • 已编辑 shuyu_fr 2009年12月17日 9:16
    2009年12月17日 8:54
  • 看看是否跨域问题,查看sl类库中
    xxx.ClientConfig 中endpoint address 是否正确,应该和WCF服务路径是相同的
    2009年12月17日 9:06
  • 我没有xxx.ClientConfig 这个文件呀,我解压了客户端的xap文件,里面并没有这个clientconfig文件。 这个文件存在于什么地方?
    2009年12月17日 9:13
  • 没有人知道吗?顶一下~
    2009年12月21日 8:32
  • 你好,
      
           我们将你的问题一个个剥离出来解决, 首先是500 internal error. 
      
           这个是服务器端的问题,与client无关,而且一般是由于服务器的设置引起的, 你可以看一下这个文档
        
           http://msdn.microsoft.com/zh-cn/library/bb386521.aspx 
       
           500 error引起的原因多种多样,而且本身没有提供什么有用的信息. 
         
           在有些IE版本中你可以直接在设置里关闭Friendly Http Error Message(关闭友好错误提示)
      
           这样你就可以获得完整的错误信息去Debug.
      
           接着是你的访问数据库问题,你使用的是纯WCF 还是WCF RIA来通信的? 
        
           我不知道你的服务器端使用了什么Assembly, 由于在开发的时候一般都是Full trust mode的所以这样的问题不会产生,但是deploy以后就不一定有F trust了。

           有个方法就是给这个website full trust,在web application的属性文件夹中找到AssemblyInfo.cs添加[assembly:AllowPartiallyTrustedCallers]

    2009年12月22日 8:30
  • Min-Hong Tang,

    非常感谢你的回答~! 我已经按照你说的尝试了一下。

    1. 我的application就是直接从 "Silverlight Business Application" 衍生出来的,应该使用的是WCF RIA.
    2. 我尝试将 [assembly:AllowPartiallyTrustedCallers] 添加在 .web project 中 properties文件夹下的  AssemblyInfo.cs 文件中.  重新发布后,问题依然存在,没有改进。
    3. 关于在设置里关闭Friendly Http Error Message,我现在还没找到这个选项, 我现在使用的是ie8 和 firefox, 不知道有没有这个选项呢?



    2009年12月22日 15:53
  • 这个问题已经解决了,是服务器权限的问题。我们申请的服务器没有 full trust 的权限。

    谢谢大家的回答~!
    • 已标记为答案 shuyu_fr 2010年3月5日 9:51
    2010年3月5日 9:51