3

ローカルのIISWebサーバーを使用してMVC3アプリケーションをホストすることができ、ホストしているマシンから、MVC3アプリケーションとすべてをデバッグできます。-ただし、別のマシン(Parallels VMでWindowsを実行しているMac)からリクエストを送信すると、期待どおりの結果が得られますが、デバッガーはブレークポイントで停止しません。

アクションにを追加しようとしましたDebugger.Break();が、w3wp.exeがクラッシュします。

つまり、要約すると、ローカルリクエストは機能しており、デバッグできます。外部リクエストは機能していますが、デバッグできません。

プロジェクトのプロパティで、を設定しUse Local IIS WebserverチェックUse IIS Expressを外しました。

Visual Studio2012Professionalを使用しています。プロジェクトはAzureSDKベースであり、添付のプロセスはWaIISHost.exeです。

4

4 に答える 4

10

問題は、ポート83でサービスを提供するようにIISサーバーを設定したため、ローカルではポート81でアクセスするため、デバッガーがこれらの要求を監視しないことでした。

これを解決するには(または、通常、Cassini Webサーバーでリモートデバッグするには) 、非常に単純なトラフィックリダイレクタデーモンであるrinetdというツールをダウンロードし、解凍先のフォルダにconfig.cfgを作成します。形式は<source ip> <source port> <dest. ip> <dest port>です。したがって、私のMacでは、Safariで次のアドレスに移動します:192.168.1.23:8080 / Controller / Action、そしてそれはローカルリクエストであるかのようにlocalhost:81 / Controller / Actionにリダイレクトされます!config.cfgの例を次に示します。

192.168.1.23 8080 127.0.0.1 81

または、PC名を使用して、DHCPが新しいアドレスを提供するときに静的IPを割り当てたり、構成を変更したりする必要をなくすことができます。

Jeff-PC 8080 127.0.0.1 81

次に、コマンドプロンプトを開き、cdrinetdフォルダーに移動して、を実行しますrinetd.exe -c config.cfg

チャームのように機能します。

于 2012-11-29T11:59:35.130 に答える
7

リモート要求はIISによって処理されていることがわかりますが、ローカル要求は「Cassini」サーバーまたはVisualStudioのサーバーを介して処理されています。

IISを使用してコードをデバッグしていることを確認してください。VisualStudioをw3wp.exeにアタッチして、IIS経由でデバッグできます。管理者としてVisualStudioを起動する必要があります。

Visual Studioをw3wp.exe(IISプロセス)にアタッチするには:Visual Studioで、デバッグメニューから[プロセスにアタッチ...]を選択します。

  • 「すべてのユーザーのプロセスを表示する」にチェックを入れます。

  • 「すべてのセッションのプロセスを表示する」にチェックを入れます。

  • 選択ボタンを押して、(添付先)から「管理(v ....)コード」を選択します。

  • 「更新」ボタンを押す

w3wp.exeが表示されます!

ここに画像の説明を入力してください

于 2012-11-29T10:27:12.440 に答える
2

Visual Studioを起動するときは、管理者として起動し(右クリックして[管理者として実行])、プロジェクトのソリューションを読み込みます。

次に、デバッグメニューから[プロセスにアタッチ...]を選択し、[すべてのユーザーのプロセスを表示する]チェックボックスと[すべてのセッションのプロセスを表示する]チェックボックスがオンになっていることを確認します。[使用可能なプロセス]パネル内で、スクロールしてデバッグしようとしているIISアプリプール(通常はw3wp.exeと呼ばれます)に関連するプロセスを見つけます。

このプロセスに接続し、ブラウザでページを更新します。これにより、デバッグが可能になります。

どうもありがとう。

ベンジャミン

于 2012-11-29T10:21:38.800 に答える
2

おそらく間違ったプロセスをアタッチしています。

以下を実行して、間違ったプロセスをデバッグしていることを確認してください。

  • ローカルマシンから、Webアプリケーションをデバッグモードで起動します(F5キーを押します)。
  • デバッグに進みます->プロセスをアタッチします

下にスクロールすると、アプリケーションをデバッグするためにVSがアタッチしたプロセスが表示されます(別の色(薄い灰色で表示されるはずです))。プロセスがそうでない場合はw3wp.exe、アプリケーションのホスティングにIISを使用しておらず、別のマシンから要求を行うときに間違ったプロセスをデバッグしている可能性があります。

于 2012-11-29T10:32:04.247 に答える