2

C# ASP.NET Web サービスでネイティブ DLL (FastImage.dll) を使用しています。これには、IIS を停止して DLL を削除する必要があります。公開した Web サービスの bin フォルダーにあるこの DLL を削除できないため、(公開に成功したと見なされていても) 公開できず、開発とバグの修正が困難になります (特に、以前のコードを問題なく実行している場合)。変更がサーバーに反映されない場合があります!)。Web サービスが DLL を爆破してロックする原因となるバグは、前述の DLL の外部にある私のコードにあることに注意してください。そのため、これは FreeImage ライブラリよりも一般的な問題だと思います (それらに熱をもたらさないでください)。

  1. 誰もこれを経験しましたか?
  2. VS IDE から「発行に成功しました」と表示されたときにそれが本当に意味することを確認する方法、または発行を試みる前にファイルが実際に削除されていることを確認するスクリプトを実行する方法はありますか (プレビルドのように) VC++ のステップ)。(現在、古い DLL を実行するのではなく、DLL が置き換えられたことを確認するために、公開する前にファイルを手動で削除しています。DLL を削除できない場合でも、問題は残ります。)
  3. ファイルがバッチ ファイルから正常に削除されたかどうかを検出するにはどうすればよいですか? (IIS が失敗した場合は、IIS を停止して開始することができます)
  4. IIS をスクリプトから (できれば VS IDE の [公開] アクションから) 停止および開始することは可能ですか?
4

2 に答える 2

2

IISReset コマンド ライン ツールを使用すると、発行先のリモート サーバーではなく、ローカル コンピューターでのみ IIS が再起動されます。

Windows 2003 サーバーにパブリッシュすると仮定すると、Web サービスが実行されている Web サイトまたは仮想フォルダーで IIS AppPool を停止して再起動するという、やや抜本的でない手順を試すことをお勧めします。(そうすれば、ターゲット サーバーで実行されているすべてのサイトをオフラインにするわけではありません。)これも、Web サービスが独自のアプリ プールで実行されていることを前提としています。理想的にはそうすべきなので、隔離しておいてください。

発行プロセスを使用することから離れ、Web 配置プロジェクトの使用を検討することをお勧めします。VS 2005 Web Deployment Projectsの詳細を説明した ScottGu のブログへの投稿を次に示します。

Web 配置プロジェクト アプローチの利点は、MSBuild のすべてのパワーと機能を提供することです。これは、実際には MSBuild の便利なラッパーにすぎません。これは、ビルド前およびビルド後の機能に関する MSBuild チームからの投稿です。

お役に立てれば。

于 2008-09-06T03:09:26.077 に答える
0

IISReset コマンド ライン ツールを使用して、iis を停止/再起動できます。したがって、単純なバッチ ファイルを作成して、iis を停止し、ファイルをコピーしてから、iis を再起動することができます。ただし、これを VS パブリッシュ機能と統合する方法がわかりません。

于 2008-08-30T00:16:29.673 に答える