8

これは私を夢中にさせています。この Web サービスは、VS 2008 を使用して C# で実装しています。IIS で公開しています。リリース ビルドを変更して、pdb ファイルが dll と共に inetpub のターゲット ディレクトリにコピーされるようにしました。

また、web.config ファイルには debug=true があります。

次に、例外をスローする Web サービスを呼び出します。スタック トレースには行番号が含まれていません。ここで何が欠けているのかわかりません。アイデアはありますか?

追加情報: VS 組み込み Web サーバーを使用して Web アプリを実行すると、動作し、スタック トレースに行番号が表示されます。しかし、VS 組み込み Web サーバーが使用しているのと同じファイル (pdb および dll) を IIS にコピーしても、スタック トレースに行番号が表示されません。

pdb ファイルを無視する IIS に関連する何かがあるようです!

更新 IIS に公開すると、すべての pdb ファイルが bin ディレクトリの下に公開され、すべて問題なく表示されます。しかし、プロジェクトに関連する特定のディレクトリの下にある "C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files" に移動すると、アセンブリ (.dll) ファイルがすべてそこにあることがわかります。 、しかしpdbファイルはありません。しかし、VS 組み込み Web サーバーを使用してプロジェクトを実行すると、これは起こりません。そのため、pdb ファイルを一時フォルダーに手動でコピーすると、行番号が表示されます。

pdb ファイルが一時フォルダーにコピーされない理由はありますか?

ところで、ワーカー プロセスにアタッチすると、Symbols loaded! と表示されます。

4

5 に答える 5

3

これは同じ問題であり、太陽の下ですべてを試して修正しました。この同様の質問で受け入れられた答えが見つかるまで、何も機能しませんでした: pdb present にもかかわらず、IIS はスタック トレースに行番号を与えません

web.config で偽装を使用していることが判明しました。

<identity impersonate="true" />

スタックトレースの行番号が失われます。エントリを取り出すと、行番号が返され、元に戻すと、数時間後に (Kerberos チケットが更新されましたか?) 行番号が再び消えました。

なりすましがスタック トレースに影響する理由はわかりませんが、そうです。

ほとんどのサイトで偽装を有効にする必要があるため(これらのサイトには行番号があります)、この特定のWebサイトで偽装を無効にして、行番号を取得しました!!

于 2010-12-03T16:58:09.227 に答える
0

VS または windbg を使用してワーカー プロセスにアタッチし、pdb を見つけられるかどうか、アセンブリと一致するかどうかを確認します。

もう 1 つの一般的な理由は、[最適化された] リリース DLL を実際に使用していることです。IIS に固有のものではないと思います。

于 2010-02-05T10:00:49.680 に答える
0

web.config で必ず「debug=true」を設定してください。設定しないと、例外に行番号が表示されません。

于 2010-02-24T10:06:45.287 に答える
0

パブリッシュ先のサーバーのシステムファイルで<deployment retail="true" />設定が構成されている可能性があります。machine.config

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG

詳細については、次を参照してください。

ASP.NET 構成 - 展開要素 (ASP.NET 設定スキーマ)

ちょっとした考え。

于 2010-02-05T05:07:54.697 に答える
0

これが役立つかどうかはわかりませんが、VS2008 C# プロジェクトのプロパティの [ビルド] タブの下に、デバッグ情報を「フル」または「pdb のみ」に設定する必要がある [詳細設定] ボタンがあります。

于 2010-09-30T05:21:20.793 に答える