第五十八章 CSP的常见问题 - HTTP请求失败
HTTP请求失败。无法处理超事件。这是什么意思?
当浏览器试图与CSP broker
小程序通信但无法通信时,会发生超级事件错误。这可能与代码或配置有关。要确定问题是否出在代码上,请加载http://localhost:57772/csp/samples/zipcode.csp
(其中57772
是Caché web
服务器端口号。如有必要,用实际的web
服务器端口替换57772
,如果有外部web
服务器正在运行(http://localhost/CSP/samples/zipcode.CSP
),则省略它,或者如果Caché
是远程安装的,则用IP
地址或机器名称替换localhost
。)
在邮政编码页面上,单击#SERVER
,在邮政编码框中输入邮政编码,如02142
,然后按Tab
键。如果没有收到超级事件错误,则说明配置正确,并且超级事件错误很可能是由编码错误引起的。
如果问题看起来与编码有关,那么有两件事需要寻找。在加载页面时,切勿使用#SERVER调用。这包括在<Body>标记的onLoad
事件中调用它们,可以直接调用,也可以从onLoad中调用的JavaScript方法调用。它还包括从runat=\“服务器\”
代码块的&js<>行中调用它们。如果需要在页面加载时调用方法,请在runat=\“服务器\”
块中使用对象脚本语法。
<script language="cache" runat="server">
// if method is located in the page or in a class the page inherits from
d ..mymethod()
// if class cannot be called using dot syntax
d ##class(User.MyClass).mymethod()
</script>
我收到一条错误消息,指出我的例程中的某一行有问题,但我找不到int例程。它在哪里?
根据当前的设置,在编译CSP页面时可能不会保留源代码。要强制Caché维护此源代码,可以执行以下两种操作之一:
- 在选中生成的源代码的情况下,从
Studio
编译CSP
页面。在Studio
中,单击工具>选项>编译器>常规标志。选中保留生成的源代码复选框。然后,要编译CSP页面,请单击Build>Compile。 - 使用k标志从终端编译
CSP
页面以保存生成的源代码。在Terminal
,验证是否在正确的名称空间中。(如果没有,请输入:Zn “<namespace>”
.)。要编译您的csp
页面,输入:Do $System.CSP.LoadPage(“/csp/<namespace>/<pagename>.csp”, “ck”)
。例如:
Do $System.CSP.LoadPage("/csp/samples/james.csp", "ck")
要查找生成的源代码:
打开Studio
并验证是否在正确的名称空间中。单击文件>打开。在“文件类型”列表中,单击“中间例程(*.int
).。找到csp.<csp_page_name>.x.INT
,其中x是该例程在系列中的编号。大型CSP
页面被分成多个INT
例程。包含错误的文件的编号显示在最初收到的错误消息中。
当我运行我的CSP
页面时,#(变量)#
出现在浏览器中。为什么没有用变量中的数据替换它?
这表明CSP
页面没有被Caché CSP
编译器正确解析。确保通过web服务器运行页面,如下所示:http://localhost/csp/<namespace>/page.csp
.
当我尝试加载我的CSP
页面时,为什么会收到无效字符错误信息?
如果不是通过web
服务器加载页面,此错误很常见,因为浏览器不知道如何表示CSP
语法。如果URL看起来像C:/install-dir/csp/user/mypage.csp
,,没有通过web服务器加载。
URL
应该类似于http://localhost:57772/csp/user/mypage.csp
or http://localhost/csp/user/mypage.csp
.
这些消息也可能是由于没有正确转换为ObjectScript
方法调用的#server()#
调用造成的。在浏览器中,右键单击并查看页面的源代码。如果源文件仍然包含#server
,则语法可能不正确。请确保其格式正确:#server(..methodname())#
。
如果要将字符串传递给方法,它们必须在双引号(""
)内。一旦CSP页
面被编译成HTML
,所有的#server()#
调用都被转换成对csprunservermethod()
的调用。
为什么我的CSP
标签没有被解析?
web
服务器没有正确地将CSP
页面传递到CSP
网关进行解析。
CSP
记录错误吗?如何增加日志记录,日志在哪里?
-
如果存在内部错误,如自定义错误页面中的错误,它将被记录到
BACK^%ETN
错误日志中。如果在此日志中收到与自定义错误页面无关的内部错误,则可能是核心CSP
引擎有问题,您应该联系在新选项卡中打开的InterSystems world wide Response Center(WRC)
。 -
通过调用用户定义的错误页来记录其他错误,用户可以在该页中添加自己的日志记录功能。