インディ9およびWindows Server 2003の間の非互換性?
-
21-09-2019 - |
質問
私はいくつかのWindows 2003サーバー上のDelphiアプリケーションでの問題を抱えています。これは、別のサーバーと送信データを前後に接続するためのWebサービス呼び出しを使用しています。すぐにアプリは認証方法、アプリのダイスになるにつれて。アプリは勝利Server 2003に以前のボックスに年間働いたが、それは新鮮に構築されたマシンではありません。マシンは、ほとんどの部分は同じように設定されているが、私がダウンして追跡することができないんだということが異なっを設定いくつかの設定が明確にあります。エラーが認証するための呼び出しで明らかになりながらも、パケットスニッフィングは、何が今までのアプリ、それが何かは、早い段階での接続をセットアップ中に死んされていることを私の思考を強化し、接触、しようとしているサーバーとの間で起こりません証明しています。私は、デバッガのいずれかでアプリケーションをステップ実行することはできませんので、私は、ローカルのエラーを複製することはできません。インディ9デルファイのWeb接続は黙って失敗するかもしれない理由上の任意の考え?
解決
それが爆破されたのはここです:
MySoapObject := GetNewSoapObject(usewsdl, addr, FHTTPRIO);
...
if MySoapObject <> nil then
MySoapObject.SomeFunction(); // BOOM! Access Violation here.
ソリューションが見つかりました!これは、DEP(データ実行防止)であることが判明しました。私はDelphi2007石鹸ライブラリと我々のコードを再ビルドすると、probelmは去っていきました。私はそれを行うにはしたくなかったので(デシリアライズは、私たちのXMLサーバーチョークを作った問題の原因となった)、そして私のMGRは本当に(関与広範な回帰テスト)を行うにはしたくなかった、私は、SOAPとの違いを探しました両者の間に差があったものは何でも上の目標変更を作るというアイデアとD2005とD2007との間に、ソースコード、。すなわちは違いは違いを見つけます。 超えてはのはここに私の相棒だっ比較します。奇数であるとして際立っていたの1つの変更の種類 - RIO.PASは今、新しいユニットPrivateHeap.pasが含まれています。なぜ疑問に思う、私は右のターゲットになるように見えた説明と同様の問題をGoogleで検索して見つけます。
の DEP の問題は基本的にあり Windows XPのサービスパックで始まります 2、をお使いのハードウェアが可能である場合を、 Windowsは、コードの実行を防ぐことができます 非実行可能メモリから。 残念ながら、デルファイSOAPランタイム サンクの束を作成し、 これらのために割り当てられたメモリはありませんでした 実行可能なマーク。だから、ときOS 更新が可能にリリースされました ハードウェアは、あなたがたときの AVを取得したいです RIOに裏打ちされたメソッドを呼び出します コンポーネントの。この問題はで対処されました PrivateHeap単位で更新。
- ジャン=マリー・Babet
http://delphigroups.info/2/11/344230.htmlする
ビンゴ!それがトリッキー取得する場所今ここにいます。 DEPは、常に我々のサーバー上で有効になっています。それはそうでなかったようなので、最初は、これが見えました。しかし、DEPはトリッキーで、新しいハードウェアが古いハードウェアよりも可能です。私が考えるように、我々は、過去にDEPの問題に逃げた、そして今、新しいハードウェアは、私たちをトリップされます。当社のサーバー管理者は、(サードパーティのアプリケーションのための)オフDEP保護を反転し、再起動し、そして私たちの古いコードが働きました!我々は最終的に新しいライブラリに移動しますものの、それは私たちが回帰テストにそうでない場合は正常に動作し、このアプリを避けることができますように、これは私たちにとって大きな短期的な修正になります。
そうは要約すると:私たちのDelphi2005アプリはHTTPRIOオブジェクトの作成に干渉によるデータ実行防止(DEP)に新築Windows2003のサーバー上でクラッシュしていました。 RIOは有効登場し、例外なく作成されます。関連するIInvokableオブジェクトを使用した場合でも、それは前に、すべてのワイヤ上で通信しようとすると、アクセス違反をスローしていました。私たちの協力と非常に患者管理者への賛辞は、仲間のDEV Mcmar、越えては比較し、ジャン=マリー・Babetます。
他のヒント
それは2003年の問題を引き起こしてファイアウォールのだろうか。