好久没有用delphi了,有个老同事还在持续使用新的Delphi,用到10.3版本了。他说我原来写的Acroprise Multi-Language Suite多语言元件,在用uniGUI元件开发web程序时,standalone下32bit和64bit都没有问题,在isapi下32bit没问题,但是64bit有报错,web界面出不来。

我准备了开发环境:windows 10,delphi 10.3,uniGUI 1.90。

standalone下,AcroMulti在32bit和64bit确实没问题。

又复习了一遍如何把isapi部署到IIS中,windows 10预装IIS是10.0版本。发现项目编译在32bit下AcroMulti能正常跑,但是在64bit下,确实画面出不来。

如何Debug呢,找来找去,有说用inetinfo.exe,有说用w3wp.exe,都没成功。后来还是在stackoverflow网站找到这个链接:http://paul.klink.id.au/Software/Delphi/DebuggingIsapiWithIisExpress/

具体说一下步骤:

(1)把C:\Program Files\IIS Express\AppServer下的applicationhost.config文件复制到我的项目dll下,如:D:\wxh\AcroMultiLang\Sample\uniGUI\Win64\Debug

(2)修改applicationhost.config文件:

  • 在<system.applicationHost>之<applicationPools>节点下新增一个节点:
<add name="IsapiDebugAppPool"
autoStart="true"
enable32BitAppOnWin64="true"
managedRuntimeVersion=""
managedPipelineMode="Integrated" />
  • 在<sites>之<site>节点下新增一个节点:
<application path="/D64" applicationPool="IsapiDebugAppPool"><virtualDirectory path="/" physicalPath="D:\wxh\AcroMultiLang\Sample\uniGUI\Win64\Debug" />
</application>
  • 修改<handlers>节点为<handlers accessPolicy="Read, Execute, Script">

设置delphi项目的run - parameters...,host application填:C:\Program Files\IIS Express\iisexpress.exe,parameters填:/config:D:\wxh\AcroMultiLang\Sample\uniGUI\Win64\Debug\applicationhost.config

ok,在Delphi下就可以调试了。

调试结果,发现是acroMultiResource.pas中有个地方计算pointer地址时,用的Integer强制转换,改为UInt64就好了。

另外,为了适应后端的每个session的语言不同,在acroMultiLib.pas中增加函数:procedure MultiHook(AProc:TGetDDAndLCIDProc);用于根据session语言动态的给不同的LCID,如:

procedure MultiDD_GetDDAndLCID(out ADDName:string;out ALCID:string);
beginADDName:=DM_DD.acroMultiStreamDD1.DDName;if (uniGUIApplication.UniSession<>nil) and (uniGUIApplication.UniSession.UniMainModule<>nil) thenbegin//返回当前Session的LCIDALCID:=TUniMainModule(uniGUIApplication.UniSession.UniMainModule).LCID;endelsebegin//没有Session,用服务器的LCID或者英文ALCID:='1028';end;
end;procedure TDM_DD.DataModuleCreate(Sender: TObject);
beginacroMultiLib.MultiHook(MultiDD_GetDDAndLCID);
end;

delphi在window10下用uniGUI开发isapi的调试方法相关推荐

  1. mysql环境搭载后老出错_使用Docker在window10下搭建SWOFT开发环境,mysql连接错误

    使用Docker在window10下搭建SWOFT开发环境,mysql连接错误 { "code": 0, "error": "(Swoft\\Db\\ ...

  2. linux段错误core dumped,Linux下Segmentation fault(core dumped)简单调试方法

    ** 什么是Segmentation fault? ** Segmentation fault就是段错误,一般指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址.访问了系统保 ...

  3. [Phonegap+Sencha Touch] 移动开发71 Sencha项目开发、调试方法建议

    原文地址:http://blog.csdn.net/lovelyelfpop/article/details/50171151 一.开发时的调试 方法1:不开启任何服务器 因为Sencha项目在开发状 ...

  4. Linux驱动开发(外传)---驱动开发调试方法

    前文回顾 <Linux驱动开发(一)-环境搭建与hello world> <Linux驱动开发(二)-驱动与设备的分离设计> <Linux驱动开发(三)-设备树> ...

  5. iis7 php5 isapi配置,Windows7 IIS7下以FastCgi和ISAPI方法安装配置PHP5教程

    说到PHP环境配置与安装,通常以Apache搭载PHP配置为主,随着PHP版本不断更新,对Windows IIS平台的支持也越来越好,在Windows IIS平台上配置安装PHP环境也越来越方便. 在 ...

  6. Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种...

    2019独角兽企业重金招聘Python工程师标准>>> 今天为在Windows下建立PHP开发环境,在考虑下载何种PHP版本时,遭遇一些让我困惑的情况,为了解决这些困惑,不出意料地牵 ...

  7. [Unix下C/C++开发] unix编程书籍推荐

    [Unix下C/C++开发] unix编程书籍推荐 发表于1年前(2012-12-20 10:14)   阅读(256) | 评论(0) 6人收藏此文章, 我要收藏 赞0 Unix/Linux/BSD ...

  8. eclipse java调用c 代码吗_linux下通过eclipse开发用java调用c程序的方法

    linux下通过eclipse开发用java调用c程序的方法: 1.先建立好java工程并建立java文件如下: public class testso {     static {         ...

  9. [亲测]在Mac下配置php开发环境:Apache+php+MySql

    公司给我们配上了高大上的Apple Mac Pro本本,这两天自己正在习惯中.通过虚拟机PD,确实解决了一些因为工作习惯无法在iOS上很好完成的事情,但是我想,既然用起了iOS就尽量将一些事务在iOS ...

最新文章

  1. 那些年,让我面试头大的几个排序算法,今天终于搞懂了!
  2. oracle 数据库数据迁移解决方案
  3. kafka reassign 限速_RabbitMQ 七战 Kafka,差异立现!
  4. [转载]IIS7报500.23错误的解决方法
  5. BZOJ 3434 时空穿梭
  6. mysqld_safe启动mysql
  7. 数据有序_Redis实战(3)-数据结构List实战一之商品信息的有序存储
  8. Android官方开发文档Training系列课程中文版:通知用户之更新或移除通知
  9. c 用户控件 多语言,多语言文本控件重叠解决方案
  10. SAP License:中国集团管控存在的主要问题-已加入点评
  11. zynq无法识别sd卡_百度米尔携手推出FZ3深度学习计算卡!
  12. win hook codeproject
  13. 计算机软件考试——嵌入式系统设计师 知识点汇总
  14. 【一句日历】2019年9月
  15. r语言爬虫和python爬虫哪个好-R语言爬虫常用方法总结(以案例说明)
  16. C++ 语法篇之 static 用法
  17. 半色调技术简介(一)
  18. 油管最火KMP算法讲解,阿三哥的源代码!
  19. NPL系列之分词和分词框架(二)
  20. python小欢喜(一)写一个python程序如此简单

热门文章

  1. C语言入门:计算总成绩和平均成绩
  2. 阿里云物联网平台python_基于阿里云物联网平台,我们这样实现简易出入监控
  3. 自己设置假期的日历控件_在假期旅行时使用PC娱乐自己
  4. 天池新人赛之新浪微博互动预测
  5. MacOS删除打印机软件指引
  6. 如何彻底删除打印机驱动程序
  7. NET新手遭遇问题(九)
  8. NOIP2018备战笔记
  9. Python3.9,寻找质数,埃拉托色尼算法
  10. 计算机游戏是什么意思,端游是什么意思啊,吃鸡端游是什么意思啊