我有一些Windows 2003的服务器上Delphi应用程序的问题。它使用一个Web服务调用与另一台服务器连接和传输数据来回。一旦应用程序获取对身份验证方法,应用死亡。该应用程序已工作多年,对与Win Server 2003的前面框,但它不会在刚建成的机器。该机器设置在大多数情况下以同样的方式,但显然的是,不同之处在于,我无法跟踪了一些配置设置。此外,虽然误差变呼叫明显的验证,数据包嗅探证明了什么应用程序,它的试图联系这加强了我的想法的东西是在建立连接dieing早在服务器之间没有发生过。我不能重复错误本地,所以我无法通过调试应用程序步骤要么。为什么在印第安纳波利斯9德尔福网络连接可能会失败默默有什么想法?

有帮助吗?

解决方案

在此处,它被吹起来:

MySoapObject := GetNewSoapObject(usewsdl, addr, FHTTPRIO);  
 ...   
if MySoapObject <> nil then   
  MySoapObject.SomeFunction(); // BOOM! Access Violation here.

解决方案发现!它原来是DEP(数据执行保护)。当我重新建立我们与Delphi2007肥皂库中的代码时,万阿英,蒋达清就走了。由于我没有想这样做(反序列化引起的制作上我们的XML服务器扼流圈问题),我的经理真的不想这样做(涉及广泛的回归测试),我找了SOAP之间的差异D2005 D2007和之间的源代码,以使得在任何有针对性的改变的想法是两者之间的不同。即发现有差别的差别。 超越比较在这里我的哥们。一个变化样的站出来为奇 - 在RIO.PAS现在包括一个新的单位PrivateHeap.pas。不知道为什么,我用Google搜索,发现了类似的问题,这似乎是正确的目标的解释。

  

DEP 问题基本上是   自Windows XP服务包   2,如果您的硬件能够下,   Windows将阻止执行代码   从非可执行存储器。   不幸的是,德尔福SOAP运行   创建了一堆的thunk和的   分配给这些内存不   显着的可执行文件。因此,当OS   更新发布上能   硬件,你会得到一个当AV   调用由一个RIO支持的方法   成分即可。这个问题解决了   与PrivateHeap单元的更新。结果    - 让 - 玛丽·巴伯结果        http://delphigroups.info/2/11/344230.html

宾果!现在,这里的地方变得棘手。该DEP一直在我们的服务器上启用。所以刚开始,这似乎是不太可能。但是,DEP是棘手的,而更新的硬件比旧的硬件更强大。所以我认为我们在过去DEP问题跑了,而现在的新硬件绊倒我们。我们的服务器管理员翻转DEP保护。(针对第三方应用程序),重新启动,我们的旧代码的工作!虽然我们最终会转移到新的图书馆,这将是对我们极大的短期修正,因为它可以让我们避免不得不回归测试这个程序,否则罚款。

这工作

所以,概括地说:我们的Delphi2005应用程序是崩溃的,由于数据执行保护(DEP)新建Windows2003的服务器与创建HTTPRIO对象的干扰。该RIO将无一例外地被创建,出现有效的。但使用了相关IInvokable对象时,它会抛出一个访问冲突,试图在所有线路上进行通信之前。荣誉给我们的合作也很有耐心的管理员,研究员开发Mcmar,超越比较,和让 - 马里·巴伯。

其他提示

难道是防火墙导致2003年问题?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top