Archived: 排除Web UI Builder中的Web 服务访问错误

This document has been archived and is no longer updated by National Instruments



主要软件:
主要软件版本: Early Access Program
主要软件修正版本: N/A
次要软件: LabVIEW Development Systems>>LabVIEW Full Development System

问题:

我遇到以下其中的一种情况:

  1. 我在out-of-browser模式下使用UI Builder。我导入了LabVIEW web服务,创建了应用程序并部署至目标。使用编辑器测试,Web服务VI工作正常。然而,当我运行部署的应用程序时失败。通过查看错误,我得到如下错误信息:Cannot connect to server, or missing/ invalid policy file.
  2. 我正在out-of-browser模式下使用UI Builder。我创建了一个VI,该VI使用HTTP节点与第三方web服务通信。我将VI创建为应用程序并部署至web服务器。使用编辑器测试,该VI运行正常。然而当我运行部署的应用程序时,HTTP访问失败。通过查看错误输出,我得到如下错误信息:Cannot connect to server, or missing/ invalid policy file.
  3. 我在out-of-browser模式下使用UI Builder。我创建了一个VI,该VI使用HTTP节点与第三方web服务通信。当我运行该VI时,HTTP访问失败。通过查看错误输出,我得到如下错误信息:Cannot connect to server, or missing/ invalid policy file.


解答: Web UI Builder 是一个微软Silverlight应用程序,由于安全的因素,它运行于一个具有限制的浏览器沙盒中。在Web UI Builderin-browser模式下时,Web服务的访问被限制。访问Web服务需要额外的许可以满足沙盒的限制条件。当Web UI Builder运行于out-of-browser模式时,它运行于限制相对较小的沙盒之中,以允许任意的web服务访问。然而,运行在具有限制的in-browser模式下的已部署应用程序,web服务访问以及HTTP访问可能失败。

请按以下信息检查潜在的原因:

在浏览器中输入http://server_address/clientaccesspolicy.xml如果返回Files not Found,那么policy文件已经丢失。请按一下内容创建一个clientaccesspolicy.xml 文件。

<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*" http-methods="*">
         <domain uri="http://*" />
         <domain uri="https://*" />
       </allow-from>
       <grant-to>
          <resource path="/" include-subpaths="true" />
       </grant-to>
     </policy>
   </cross-domain-access>
</access-policy>


该文件应在以下位置:
o    Desktop - \National Instruments\LabVIEW 2009\www
o    Real-time target - \ni-rt\system\www
试着在浏览器中访问http://server_address/clientaccesspolicy.xml http://server_address/crossdomain.xml如果浏览器返回Not Found”,那么服务器没有policy文件。那么请联系web服务供应商,要求其在web服务根目录下放置clientaccesspolicy.xmlMicrosoft)或者crossdomain.xml (Adobe)文件并设置正确的访问权限。

更多有关客户端访问policy文件的信息,请参考微软的文档:MSDN Library: Network Access Restrictions in Silverlight。更多有关crossdomain文件的信息,请参考Adobe文档:Adobe Developer Connection: Cross-domain policy file specification

如果服务器已有Policy文件(查看“丢失Policy文件”段落以得到查看Policy文件的方法),请保证policy文件具有正确的权限。如果没有policy文件访问权限,请联系web服务供应商,为您的应用程序添加权限。

更多有关客户端访问policy文件的信息,请参考微软的文档:MSDN Library: Network Access Restrictions in Silverlight。更多有关crossdomain文件的信息,请参考Adobe文档:Adobe Developer Connection: Cross-domain policy file specification

o     从editor访问:至少clientaccesspolicy.xml文件需要访问*.niwsc.com的权限。crossdomain.xml需要允许来自所有被信任的域的访问。
o    从部署的应用程序访问:至少,clientaccesspolicy.xml文件需要允许对部署应用程序所在的域有访问权限。crossdomain.xml需要允许来自所有被信任的域的访问。Cross Zone Access (Windows only)
这个错误在当一个被认为是来自“Internet”域的客户端试图连接一个部署在“本地局域网”内的web服务时会发生,反之亦然。由于安全因素,这种通信方式是被禁用的。打开浏览器输入应用程序URL以确定是否您的应用程序是在Internet网络当中:当您的应用程序加载时,查看浏览器底部的地球图标,查看该图标旁边的文字,如果显示“Internet”,那么您的应用程序就是在Internet互联网络中。打开浏览器输入web服务URL以确定是否服务器是在局域网络当中:当您得到响应时,检查地球图标旁边的文字,如果显示“本地局域网”,那么您就会得到交叉区域访问的错误。如果想绕开这个问题,请在out-of-browser模式下使用Web UI Builder。如果您建立并且部署了应用程序至服务器,请确保服务器也在“本地局域网”中。更多信息,请参考微软文档: MSDN Library: URL Access Restrictions in Silverlight


相关链接: MSDN Library: Network Security Access Restrictions in Silverlight
MSDN Library: URL Access Restrictions in Silverlight
Adobe Developer Connection: Cross-domain policy file specification

附件:





报告日期: 10/29/2010
最近更新: 12/31/2010
文档编号: 5ESCMT3R