2012-01-20 12 views
2

コンテキスト:XPのローカルIISに.NET Webサービスがデプロイされています。 VS 2010はWebサービスコードのデバッグに使用されました。VS 2010で.NET Webサービス初期化コードをデバッグする方法は?

問題: VSをASP.NETワーカープロセスに接続することで、ホストされているWebサービスのデバッグに精通しています。このアプローチは、デバッグされるコードの一部が、Webサービス内のコンストラクタなどの初期化コードでない場合に機能します。 ASP NETワーカープロセスが作成されると、Webサービスのコンストラクタが呼び出されます。 VSからASP NETワーカープロセスにアタッチするときには、コンストラクタは既に呼び出されているため、デバッグすることはできません。

Webサービス内のコンストラクタに到達する前に、ASPNETプロセスに接続してWebサービスをデバッグするにはどうすればよいですか?

答えて

3

ほとんどの場合、thisの複製。 あなたは、デバッガがアタッチするためのWebサービスのコンストラクタで

Debugger.Launch(); 

命令を求めるメッセージが表示されるように挿入することができます。 MSDNを参照してください。

enter image description here

+0

これはサービスで動作しますか?私はそれができるようにするにはUI権限が必要だと思っていて、サービスにはUIアクセス権がありません。 –

+0

ちょうどそれを試してみて、それはうまくいきますが、ユーザーのIISがどのOS/IISバージョンで実行されているかによって制限があるかどうかはわかりません。 – Strillo

+0

役に立つチップをありがとう、それも私を助けるでしょう。 –

0

これが最良の選択肢ではないかもしれないが、それは私が同様の問題があった時に見つけることができた唯一のソリューションでした。あなたのコンストラクタにThread.Sleep(xxxx)を入れて、時計を叩いて、初期化が完了する前に接続しようと試みてください。一定の秒数で初期化されていないと、サービスが停止する可能性があるため、スリープを高く設定しないように注意する必要があります。 (初期化関数を実行する前にサービスを終了する前に、サービスが終了するまでには痛みがあります)

関連する問題