这么些年自己开发一直没配好不带57772访问webservice的环境。项目上都是让找DBA解决。今天深入研究一下csp的webservice在iis的发布,即服务去57772.
我们平常安装的Cache数据库一般选开发版,开发版没安装CSPGateway,安装了的话在C:\inetpub\有CSPGateway文件夹
没安装的话可以运行安装包点修改,然后把“Web服务器网关选上”补充安装即可
这里我试过直接从其他服务器拷贝这个目录放C盘这里然后配置CSPms模块是不行的。因为还要依赖他安装的csp站点配置模块。
安装之后iis默认网站下会有cache和csp两个站点
然后根据文档访问127的csp配置页面
http://localhost:52773/csp/bin/systems/module.cxw
输入数据库用户名密码如:_system SYS
然后配置发布csp服务
这时候57772端口的webservice能访问
去掉57772的端口不能访问
iis能访问Cache发布的webservice下面几个点必须注意
这样去掉57772可以访问
模块配置:CSPms C:\inetpub\CSPGateway\CSPms.dll
模块映射: *.cls CSPms CSPGatway_cls 请求限制去掉映射tab的复选框勾
以上就是试了好久把本机非57772访问webservice不行问题解决方式。
总结要点:
1.安装时候要安装“Web服务器网关”,没安装可以再运行安装包补充安装
2.配置CspApplacation的路径一级名称要和IIS一个可用站点一致
3.和CspApplacation路径一级名称对应的IIS站点要有CSPms模块和相应的映射。经过我测试,像我这个webservice只用到.cls只配一个.cls也可以。
4.测试如果报服务不可用的话就到http://127.0.0.1/csp/bin/Systems/Module.cxw页面配置默认参数,然后测试连接
首先57772发布的webservice是Cache内部包装的阉割版Apache服务器发布的网站服务,面向portal等轻量级运维使用。不适合数量量大的正式环境使用(容易出现假死)。可以用cmd操作这个httpd.exe控制这个web服务的(有些库的57772端口登录不了portal时候可以直接改这个exe的启动端口),也可以terminal重启这个服务。
。
//适用开发的csp用不了排查,包括改apache端口
尝试新的跨平台 PowerShell https://aka.ms/pscore6
PS C:\WINDOWS\system32> cd C:\InterSystems\Cache\httpd\bin
PS C:\InterSystems\Cache\httpd\bin> .\httpd.exe -k install
PS C:\InterSystems\Cache\httpd\bin> .\httpd.exe -k stop
The Apache2.4 service is not started.
PS C:\InterSystems\Cache\httpd\bin> .\httpd.exe -k start
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs
PS C:\InterSystems\Cache\httpd\bin> httpd.exe -k status
//项目偶尔webservice就是报密码不对或者连不上时
Cache命令重启apache服务。有的项目就是webservice调用不同或者报密码错误又不好重启数据库,考虑Cache在apache发布的csp服务出毛病了,重启下Cache的apache
%SYS>w ##class(Config.Startup).RestartWebServer()
用57772访问发布的webservice对一级名称是没要求的,基本都可以访问到。原理就是访问是Cache包装的Apache服务,他们之间的对接好的。用不带57772端口访问webservice就是从iis站点访问的,即走80或者实际网站端口,这时候是根据webservice一级名称决定走哪个iis站点。根据名字选择站点后会根据url后缀决定用哪个模块映射处理请求。如http://127.0.0.1/test/LIS.WS.DHCLISService.CLS?WSDL=1就是.cls后缀,会从iis的名字叫test的站点找.cls的处理模块来处理请求。这就是要配置模块和模块映射的原因。
zlz 20220302 全栈才是我目标