web-dev-qa-db-ja.com

IISで実行されているASP.NET Coreアプリケーションのデバッグ

IISで実行中にASP.NET Core Webアプリケーションをデバッグする方法はありますか?

IISの下で実行しています。ポート443でSSLを介して使用できるようにする必要があるためです。

29
Brandon F
  1. デバッグ構成でWebアプリケーションを公開する
  2. IIS説明通り こちら にWebサイトをセットアップします
  3. ブラウザでWebサイトを開いて、ドットネットプロセスを開始します
  4. Visual Studioで、[デバッグ]-> [プロセスにアタッチ]を開くか、Ctrl + Alt + Pを押します。
  5. [自動]または[管理(v4.6、v4.5、v4.0)]があることを[接続]行で確認してください。そうでない場合は、選択を押し、「デバッグするコードのタイプを自動的に決定する」を選択します
  6. 「すべてのユーザーからのプロセスを表示する」をチェックします
  7. dotnet.exeを選択し、Attachを押します

注:複数のdnx.exeプロセスが表示される場合は、IIS= user =列のユーザー名。デフォルトでは「IIS APPPOOL {your app pool name}」のプロセスを選択してください。

追伸空のユーザー名でdotnetプロセスが表示される場合は、Visual Studioを管理者として実行してください

更新

ASP.Net Core 1.0.0では、「{youprojectnamet.exe}」にアタッチする必要があります。例えば。プロジェクトの名前が「Web」の場合、「Web.exe」にアタッチする必要があります。また、web.configの次のセクションでエグゼクティブの名前を見つけることができます。

<system.webServer>
   <aspNetCore processPath=".\Web.exe" />
</system.webServer>
61
Vitaly

利点は、実際のホスト名を使用して外部でWebサイトを実際に使用できることです。 Androidアプリがlocalhostに接続してasp.netコアWeb APIサービスをデバッグしようとしていることを想像してください。実際の物理IPアドレスを実際に使用して実行中の何かに接続できない限り、セットアップに苦労しますiis。BEFOREと同じように、すべてを行うことができますが、それが新しいものであるという意味ではなく、自動的により実用的です。また、古いデバッグiisオプションを持たないことは、生産性の観点から後退しています。

5
Looooooka

これは本当に必要ですか? ASP.NET Coreアプリケーションは、IIS(dotnet.exeを使用))への外部プロセスとして実行されるため、IISを介してデバッグしても何も得られません。バックエンドアプリケーションはプレーンHTTP経由でリクエストを取得します。

実際のIISホスティングがASP.NET Coreでどのように機能するかについては、このブログ投稿をご覧ください。 http://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications-with-IIS

Visual Studioは現在、完全なIISの下でのデバッグをサポートしていません。また、私が聞いたところ、これも計画されたものではありません。MicrosoftはIIS = Expressで、IIS Expressの証明書を設定できます。

ASP.NET Coreプロジェクトでは、[プロジェクトのデバッグ]オプションにSSLを有効にするオプションがあります。 IIS Expressはローカル証明書を作成し、SSLを使用してアプリケーションをデバッグできます。

このアプローチの利点は、F5キーを押すだけで機能することです。手動で接続する必要はありません。

enter image description here

5
Rick Strahl

シナリオ:IIS Localで実行されているASP.NET Core Webアプリケーションのデバッグ。

前提条件:既存のVisual Studioインストールに「開発時間IISサポート」を追加します。次のリンクに従ってください: https://blogs.msdn.Microsoft.com/webdev/2017/07/13/development-time-iis-support-for-asp-net-core-applications/


1。 Visual Studio 2017で、「MvcMovie」という名前の「ASP.NET Core Web Application」を作成します。

1.1。 「MvcMovie」プロジェクトを開きますプロパティ

1.1.2。 「Debug」タブに移動し、設定する(そうでない場合):

1.1.2.1。 「プロファイル:」「MvcMovie」。

1.1.2.2。 「起動:」「IIS」

1.1.2.3。 (チェック済み)「ブラウザの起動:」「 https:// localhost "

1.1.2.4。 「環境変数:」|名前:「ASPNETCORE_ENVIRONMENT」|値:「開発」|

1.1.2.5。 「Webサーバー設定」

1.1.2.5.1。 「アプリのURL:」「 https:// localhost

1.1.2.5.2。 (チェック済み)「匿名認証を有効にする」

enter image description here


2。 「IIS Local」マネージャーで、「AspNetCoreMvcMovie」という名前の「Webサイトを追加」。

2.1。プロジェクト(ソリューションではなく)フォルダー(この例では "D:\ ASP-NET-Core\ASP-NET-Core-Projects\MvcMovie\MvcMovie")で「物理パス」を設定します。

2.2。 「Type」のバインド:「https」。

2.3。 「SSL証明書」:「IIS Express開発証明書」。

2.4。 「OK」をクリックします。

2.5。 「アプリケーションプール」に名前「AspNetCoreMvcMovie」プールを見つけます。

2.5.1。 [アプリケーションプールの編集]で、[。NET CLRバージョン]を[マネージコードなし]に設定します。

2.5.2。 「OK」をクリックします。

enter image description here


3。 VS 2017の昇格されたアクセス許可を設定します

3.1。そのようなマッサージがある場合:「Microsoft Visual Studio」:「このタスクにはアプリケーションに昇格されたアクセス許可が必要です」、次のリンクの「(方法2)互換性のトラブルシューティング」のトラブルシューティングに従ってください: https://social.technet .Microsoft.com/wiki/contents/articles/46441.visual-studio-2017-this-task-requires-the-application-to-have-elevated-permissions.aspx

3.2このメソッド(メソッド2)が完了すると、VS-2017が起動します。

3.3。 (「デバッグ」モードで)IISプロファイル(IISローカルで実行するように設定された「MvcMovie」アプリケーションを実行... !!! IIS Expressではなく!!! )。この場合、プロファイルは「ステップ1」で現在のアプリケーションの名前(「MvcMovie」)で設定されます。

3.4。アプリケーションがブラウザで実行されるのを待ちます。

3.5。アプリケーションを閉じます(Webブラウザを閉じます)。

3.6。互換性のトラブルシューティングウィンドウに移動し、[次へ]をクリックします。

3.6.1。次に、「->はい、このプログラムのこれらの設定を保存します」をクリックします。

3.6.2。 「問題の解決」が「設定の保存」を完了した後、「トラブルシューティングが完了しました」ウィンドウを表示する必要があります。 「トラブルシューティングが完了しました」ウィンドウで、「問題が見つかりました」->「互換性のないプログラム」->「修正済み」を表示する必要があります。次に、「->トラブルシューティングツールを閉じる」をクリックします。

4。 VS-2017から、実行(「デバッグ」モードで)IISプロファイルを使用した「MvcMovie」アプリケーション(この場合は「MvcMovie」という名前)。

enter image description here


2
Ted

Classic ASPコードをホストするWebサイトで実行中に、.NETコアサブアプリをデバッグできるソリューションを探していました。

Looooookaのリバースプロキシソリューションは私にとってはうまくいきましたが、それを理解するには多少の手間がかかりました。

1.)この行をStartup.csに追加します。

app.UsePathBase("/core");  // core is the name of my subdirectory

「app.UseStaticFiles();」という行の前に必ず配置してください。

2.)「URL Rewrite v2」および「Application Request Routing」をインストールします

3.)IIS Webサイト(/ core)にフォルダーを追加し、次のようにフォルダー内にweb.configファイルを作成します。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="IISExpressReverseProxy" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                    </conditions>
                    <action type="Rewrite" url="http://localhost:1306/core/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

4.)Visual Studioでプロジェクトプロパティを開き、[デバッグ]タブに移動します。 「ブラウザの起動」URLをIIS url。

0
Mike Olund

ちょうど歴史を経て、これにつまずいた。誰もがこの質問に出くわした場合...私のための解決策は非常に簡単であることが判明しました。 .netコアアプリで認証を使用している場合は、HTTP(デバッグ部分)を使用して基本認証を使用していることを確認してください。その後、IISでUrl Rewriteを使用して http:// localhost:someport .netコアインスタンスへのリバースプロキシを設定します。これで問題は解決しました。おそらくurl rewriteはすぐにhttpsをサポートし、その場合、HTTPを使用した基本認証はデバッグ目的にも使用できます。

0
Looooooka

IISに対して実行したいASP.NET Core 2.2 Web APIプロジェクトにも同じ問題がありました。

launchsettings.json

  "iisSettings": {
    "windowsAuthentication": true,
    "anonymousAuthentication": true,
    "iis": {
      "applicationUrl": "http://localhost/AspNetCore22Starter",
      "sslPort": 443
    },

IIS

Httpsバインディングを構成します。また、接続プロセスを見つけやすくするために、Webアプリケーションの特定のアプリケーションプールを定義することをお勧めします

プロセスにアタッチする

プロセスにアタッチ(Ctrl-Alt-P)+ w3wp.exeプロセスを検索+ユーザー名= IIS APPPOOL \:

Hosting process for ASP.NET Core 2.2 application

0
Alexei

上記のすべての提案を試しましたが、不足している要素をすべてまとめるまで何も機能しませんでした。

IISでのデバッグの重要な部分は次のとおりです。

  • 開発マシンでIISを正しく設定する
  • IISサイトのSSL証明書のインストール
  • 開発時間の追加IIS Visual Studioインストーラーからのサポート
  • 少なくとも.NET Core SDK 2.2をインストールする
  • IISを使用してブラウザを起動するようにVisual Studioで起動プロファイルを設定します。

IISプロセス内でサイトを実行するには、.NET Core 2.2が必要です。

詳細は次のとおりです。 http://intrinsicinnovation.com/Articles/2019/01/08/debugging-asp-net-core-applications-within-iis/

0
Chris J