IISプロセス(w3wp.exe)にアタッチするときに問題が発生していると思われるASP.NET MVCプロジェクトを使用しています。私は自分のローカルマシンでソリューションとIIS 8.5を実行しているので、これがネットワークと関係があるとは思わないでしょう。私にとって奇妙なのは、ローカルでデバッグする他のソリューションのブレークポイントにヒットできることです。
私が正確に抱えている問題は、ブレークポイントが赤い中空の円に変わり、ヒットしないことです。通常、これに対する修正はソリューションのクリーン/リビルドですが、これは機能していません。ページに「throw new Exception」を追加し、例外が表示されるようにすることで、コードが更新されていることを確認しました。繰り返しますが、この問題はこの1つのソリューションでのみ発生します。私がデバッガを実行する他のソリューションは問題なく動作します。また、アプリプール、Webサイト、IIS、およびコンピューターの再起動も試みました。
私が読んだ記事のいくつかは、アンチウイルスプログラムがリモートデバッガーがプロセスにアクセスするのをブロックできると述べました。ただし、セットアップ全体がローカルマシンに含まれているため、問題になるとは思えません。私は最近、みんなのマシンに多くの変更を加えている新しいIT担当者を雇ったので、少し心配しています。
追加するもう1つのポイントは、このWebアプリケーションでユニークなことです。IISのバインディングです。サブドメインに関連するいくつかのカスタム機能を活用するために、バインディングは「*」です。
それまでの間、私は解決策を探し続けますが、誰かがこの1つの解決策を適切にデバッグできない原因を考えている場合は、本当に感謝しています。
編集:ASP.NET一時ファイルを削除することを提案するソリューションを見つけました。運がありません。
解決しました。デバッグメニューで選択された誤った構成であることになりました。誤って、ドキュメントのシンボルをロードできないリリース構成に切り替えました。デバッグ構成に切り替えて、ブレークポイントが正常にヒットするようになりました。
以下に記載されているAbacusに追加するために、それはビルドを台無しにしているweb.config変換である可能性があります。この場合、web.configのコンパイルセクションからdebug
属性を削除するリリース構成があります。以下は、スクリーンショットの例とVisual Studioのビルド構成のドロップダウンリストです。
注:また、プラットフォームが構成と共に正しいことを確認してください。私の場合、Dev.Debug|Mixed Platforms
はソリューションを正しくビルドしませんが、Dev.Debug|Any CPU
はビルドします。
「管理互換モード」を有効にします。 [ツール]-> [オプション]-> [デバッグ]に移動し、管理互換モードを有効にします。
これを修正しようとして永遠に苦労しました。最後に、これが私のためにしたことです。
SelectDebug-> Options-> Debugging-> General
Tick。NET Frameworkソースステッピングを有効にする
(これはあなたがする必要があるすべてかもしれませんが、あなたが私のような場合、あなたはまた以下に述べられたものをしなければなりません。
Selectツール->オプション->プロジェクトとソリューション->ビルドと実行、
Untick「スタートアッププロジェクトとRunの依存関係のみをビルド」のチェックボックス
SelectAlways Buildから「実行時、プロジェクトが古くなっている場合」ドロップダウンから。
これはOPの問題ではないことは知っていますが、プロジェクトでこれが発生しました。ソリューションには複数のMVCプロジェクトがあり、間違ったプロジェクトがスタートアップとして設定されていました。
また、プロセス/デバッガーを開始するだけで、新しいブラウザーウィンドウを開かないようにプロジェクトの構成を設定しました。
そのため、表面上はデバッガが起動しているように見えますが、間違ったプロセスに対しては起動しています。そのため、それを確認し、複数のプロセスにもアタッチできることに注意してください。
約30分間頭を悩ませる愚かな間違い。
プロジェクトを右クリックし、次にPropertiesを左クリックして、Webタブを選択します。
ケースに適したサーバーが選択されているかどうかを確認します。
IISローカル
IIS Express
Visual Studioメニューに移動します。
デバッグ->プロセスにアタッチ
次に、下の画像のように、選択ボタンをクリックします。
次に、次のように「デバッグするコードのタイプを自動的に決定する」オプションが選択されていることを確認します。
この問題は、チェックを外すことで解決しました
プロパティ>ビルド>コードの最適化
webページのプロパティ画面([一般]の下)で設定します。
私のシナリオでは、MVCアプリとWebAPIを1つのソリューションで使用し、ローカルIIS(エクスプレスではない)を使用しています。
また、IISのサイトを実際のドメインとして設定し、実際のドメインを入力できるようにホストファイルを編集しました。すべてが機能します。また、2つのことに気付きました。
MVCコードのデバッグは完全に機能していました。
プロセスへのアタッチも完全に機能しました。デバッグ中にAPIのブレークポイントに到達しませんでした。
これが私にとっての解決策でした:
右クリックwebapiプロジェクト>プロパティ> Web>プロジェクトURL
デフォルトではlocalhostを指しますが、IISでサイトを設定したため、URLをWebサイトドメインに変更するのを忘れました(つまり、locahostの代わりに、http:// {domain-name} /と言う必要があります)。
ソリューション内のプロジェクトの1つがリリースモードに設定されました。 Debugモードに戻したところ、ブレークポイントがヒットしています。
誰かがVisual Studio 2017とIISを使用していて、Webサイトプロジェクトをデバッグしようとしている場合、次のように機能しました。
inetpub/wwwroot
ディレクトリからプロジェクトを選択します。http(s):// localhost /(IISに表示されるWebサイト名)
例:http://localhost/MyWebSite
それでおしまい! WebサイトがIISで実行されており、デバッグするWebサイトがスタートアッププロジェクトとして選択されていることを忘れないでください(右クリック- >スタートアッププロジェクトとして設定)。
あなたの右クリック 事業、左クリック 物性、選択します Web タブ。 デバッガー> ASP.NET
私の場合、実際のプロセスは元の開始プロセスとは異なります。
通常、ローカルホストサービスはw3wp.exe
プロセスを介してバインドします。私の場合、カスタムプロセスが使用されました。それに変更することで問題は解決しました。
もう1つ、リリースモードからデバッグモードに変更します。リリースモードでは、PDBファイルはブレークポイントの詳細で更新されません。そのため、アプリケーションをDebugモードでデバッグしていることを確認してください。
VS2017でMicrosoftアカウントにログインしていない場合、IISプロセスにアタッチしている間はブレークポイントをヒットできません。
上記のいずれも機能しない場合は、コードを再確認してください。ブレークポイントがヒットしていないように見える理由は、ブレークポイントを含むコードブロックが不注意な理由で実行されていないことが原因である場合があります。
たとえば、コードをコピーして貼り付けるときに、「Handles Me.Load」を忘れてしまったことが何度かあります。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
--this block of code will not execute
End Sub
対
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
--this block executes
End Sub