一、コマンドラインによるIIS Expressの起動
開発中のWEBアプリケーションをローカルIISにデプロイし、アクセスしてプロセスをアタッチする方法(w3wp)は非常に便利なデバッグ方法です。また、Visual StudioのF5実行機能もありますが、C#コードを修正するたびにプログラムを停止し、再コンパイルしてF5を再実行する必要があり、時間がかかります。コマンドラインでIISを起動する別の方法はありませんか?答えはコマンドラインでIIS Expressを起動することです(本質的にはF5と同じくIIS Expressを起動します)。
まず、Visual Studioに付属のコマンドラインツールを有効にします。私はVisual Studio 2017 Professionalを使用しています。コマンドラインで以下のコマンドを入力し、Enterキーを押すと、IIS Expressに登録されているサイトの一覧が表示されます。
"C:\\Program Files\\IIS Express\\appcmd.exe" list site
Visual Studioで新しいサイトを作成した場合、サイトのアドレスは以下のようになります:
サイト一覧には「WebSite1」という名前のサイトのみが表示されます。この場合、コマンドを使用して設定ファイルに作成したサイト情報を追加できます:
"C:\\Program Files\\IIS Express\\appcmd.exe" add site /name:MyNewSite /bindings:"http://localhost:58127" /physicalPath:"C:\\Users\\Administrator\\Documents\\Visual Studio 2017\\WebSites\\WebSite4"
次に、以下のコマンドを使用して独自のサイトを起動します:
"C:\\Program Files\\IIS Express\\iisexpress.exe" /siteid:2
この時、コンピューターのデスクトップ右下角に起動した小さなアイコンが表示されます。
ブラウザでhttp://localhost:58127を入力すると、以下の結果が表示され、コマンドライン方式での起動が成功したことを示します。
ページ操作で発生したリクエストはすべて記録されます:
Qキーを押すと、現在のサイトを停止できます。
モバイルデバイスでサイトを確認したい場合、同じローカルネットワーク内のモバイルデバイスからアクセスするには、以下のコマンドを実行する必要があります(実行時はコマンドラインツールを管理者権限で使用してください):
netsh http add urlacl url=http://\*:58127/ user=everyone;
同時に、%userprofile%\documents\iisexpress\configディレクトリにあるapplicationhost.xml設定ファイルを開き、独自に作成したサイトのXML部分を以下のように変更します:
<site name="MyNewSite" id="2" serverAutoStart="true">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\Administrator\Documents\Visual Studio 2017\WebSites\WebSite4" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:58127:localhost" />
</bindings>
</site>
そして「C:\Program Files\IIS Express\iisexpress.exe」/siteid:2を再実行すると、モバイルデバイスからアクセスできるようになります。
上記は実例テストで実行可能ですが、モバイルアクセスは不可でした。おそらく同じローカルネットワーク内にないためです。
注意:(1)新しいテストプロジェクトを作成した後、プロジェクトを再生成します:
補足:IISのデフォルトサイトルートディレクトリ:C:\inetpub\wwwroot
IISのインストール成功確認方法:(1)ブラウザでlocalhostまたは127.0.0.1を直接実行
(2)C:\inetpub\wwwrootディレクトリに入り、直接実行---このディレクトリがIISのデフォルトサイトルートディレクトリかどうかを確認します!
**a.htmlページファイルをIISデフォルトサイトのルートディレクトリに配置します。この時、http://localhost/a.htmlにアクセスすると、a.htmlページの内容が表示されます。------このテスト方法は不可です。。。。
二、IISの知識点:
IIS Expressとは?
IIS Expressは開発者向けに最適化された軽量で自己完結型のIISバージョンです。IIS Expressは、最新バージョンのIISを使用してWebサイトを開発およびテストしやすくします。IIS 7以上のすべての主要機能と、Webサイト開発を簡素化するために設計された追加機能を備えています。
IIS ExpressはIIS 7以上から派生し、IISの主要な機能をサポートしていますが、いくつかの重要な違いがあります。1つの重要な違いは、ワーカープロセスの管理です。IISでは、Windowsプロセスアクティベーションサービス(Windows Process Activation Service【WAS】)がWebアプリケーションのアクティベーションと非アクティベーションを管理しますが、ユーザーは直接制御できません。IIS ExpressではWASが存在せず、ユーザーはアプリケーションのアクティベーションと非アクティベーションを完全に制御できます。起動後、システムトレイに表示され、実行中のサイトは手動で有効化および停止できます。Hostable Web Core (HWC)は、独立したWebサーバーを記述するために使用できるIIS APIですが、WASによって管理されません。IIS ExpressはHWC上のシェルとして設計されています。
IIS Expressのインストール方法
Visual Studioのインストール時にデフォルトでインストールされます。
また、独立してインストールすることもできます。最新バージョンは10.0です。
IIS 7.5 Expressダウンロード:https://www.microsoft.com/zh-cn/download/details.aspx?id=1038
IIS 8.0 Expressダウンロード:https://www.microsoft.com/zh-cn/download/details.aspx?id=34679
IIS 10.0 Expressダウンロード:https://www.microsoft.com/zh-cn/download/details.aspx?id=48264
IIS Expressの起動方法
IIS Expressの一般的なインストールパス: C:\Program Files\IIS Express
サイト一覧の表示 C:\Program Files\IIS Express>appcmd.exe list site 表示されるサイトは設定ファイルに基づいています。後で設定ファイルについて説明します。 2.サイトの起動 iisexpress.exe /siteid:96
iisexpress /path: /port: /clr:
設定ファイル
デフォルトでは、IIS Expressは「マイドキュメント」内の以下のパスにある設定ファイルを使用します:「マイドキュメント\IIS Express\Config」。その中で、applicationhost.configは主要な設定ファイルであり、サイトの定義、アプリケーション、アプリケーションプール、および全WEBサーバーの設定をホストするために使用されます。 1. 各 ノードは1つのサイトを設定します 2. の下にこのサイトのバインディング情報が設定されています。
IIS Expressはデフォルトでローカル接続のみをサポートし、IPでアクセスできません。 注意:設定ファイルを変更した後、コマンドラインウィンドウでqを入力して終了し、再読み込みして有効にする必要があります。【同一マシンでテスト】
外部接続を有効にすることもできます (試していません) netsh http add urlacl url=http://*:{ポート番号}/ user=everyone 外部接続を無効にする netsh http delete urlacl url=http://*:{ポート番号}/
三、プログラム公開関連:
ASP.NETプログラム公開プロセスの概要(転載:https://mp.weixin.qq.com/s?__biz=MzIxMDEyNzUwOQ==&mid=2651173097&idx=1&sn=0e80e2d2244ee9adcc64a0572a78a017&chksm=8c984f13bbefc605f52d16f830c94993340ca6b00f8566aa23547681ca21224303de66f15558&mpshare=1&scene=23&srcid=0122gV2gJAivkasLX0yYFlCo#rd)
ASP.NETサイトの公開は、初心者から上級者まで、プログラム公開プロセスで多かれ少なかれ問題が発生します。例えば、VSによるASP.NETプログラム公開の失敗、IISインストールの失敗、IIS公開の失敗、ローカルネットワーク内でのアクセス不可、設定ファイルのエラー、権限不足などの一連の問題です。私が率いる500人以上の技術チームからのフィードバックを基に、今日は時間をかけてまとめましたので、皆様の参考になれば幸いです。
後の詳細な分析のために、小さなデモを作成しました。コードは以下に添付します。今回はVS2013、OSはWIN10、IIS7などの環境を基に説明します。(他のOS如WIN7も原理は似ていますが、若干の違いがあります)
1、ソリューションの全体概要
2、フロントエンド
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="sessionDemo.aspx.cs" Inherits="Test.sessionDemo" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div><asp:Button ID="btnSesison" runat="server" Text="Session" OnClick="btnSesison_Click" /></div>
</div>
</form>
</body>
</html>
3、バックエンド
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
namespace Test
{
public partial class sessionDemo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSesison_Click(object sender, EventArgs e)
{
string[] strSession = { "张三", "李四", "王五", "赵六" };
createSession(strSession);
getSession();
}
#region カスタムメソッド
//Sessionの作成
public void createSession(string[] arrStr)
{
for (int i = 0; i < arrStr.Length; i++)
{
Session[i.ToString()] = arrStr[i];
}
}
//Sessionの取得
public void getSession()
{
foreach (string key in Session.Keys)
{
Response.Write(Session[key].ToString() + ";");
}
}
//Sessionのクリア(セッションは終了しない)
public void clearSession()
{
Session.Clear();
}
//Sessionセッションの終了
public void abandonSession()
{
Session.Abandon();
}
#endregion
}
}
4、テスト結果
一、ASP.NETプログラム公開
1、VS2013でソリューションを開きます。
2、ソリューションを選択し、マウス右クリック→ポップアップダイアログから「ソリューションのクリーン」を選択します。
3、第2ステップ「ソリューションのクリーン」が終了したら、ソリューションを選択→マウス右クリック→ポップアップダイアログから「ソリューションの再構築」を選択します。
4、第3ステップ「ソリューションの再構築」が終了したら、webアプリケーションを選択し、以下の図の「testDemo」→ポップアップダイアログから「公開」を選択します。
5、設定「構成」ノードをクリックし、「次へ」をクリックします。
6、設定「接続」ノードをクリックし、「次へ」をクリックします。
7、設定「設定」ノードをクリックし、「次へ」をクリックします。
8、設定「プレビュー」ノードをクリックし、「公開」をクリックします。
9、公開後のファイルは以下の図のようになり、ファイルの公開が成功しました。公開成功後、フォルダを開くと、すべてのページの.csファイルがbinに配置されます。
二、IISのインストール
1、コントロールパネルを開き、「プログラム」を選択します。
2、ポップアップダイアログで「Windows機能の有効化または無効化」を選択します。
3、ポップアップダイアログで、「Internet Information Services」を選択します(初心者はすべて選択することをお勧めします。上級者は必要に応じて選択してください)、「OK」をクリックします。
4、OKをクリックすると、システムが変更を適用しています。
5、アプリケーションの変更が終了したら、「今すぐ再起動」を選択します。システムの再起動後、IISの設定が完了します。
6、コンピューターを再起動後、IISの設定が成功したかテストします。ブラウザのアドレスバーに「http://localhost」と入力し、以下のインターフェースが表示されれば、IISのインストールが成功したことを示します。
三、IISでのサイト公開
1、検索ボックスに「Internet Information Services」と入力します。
2、IISメインインターフェースを開きます。
3、「サイト」→マウス右クリック→ポップアップダイアログから「サイトの追加」を選択します。
注意:ホスト名には、コンピュータ名(システムプロパティで確認)またはlocalhostを入力できます
4、ポップアップダイアログで関連パラメータを設定します。
5、この時、IISメインインターフェースの「サイト」に「www.testWebSite」という名前のサイトが追加され、これは先ほどサイトに付けた名前です。
6、アプリケーションプールの設定
7、デフォルトドキュメントの設定
8、デフォルトドキュメントの追加が成功した後、以下の図のようになります:
9、権限不足を防ぐために、公開したファイルに「everyone」メンバーを追加し、権限を付与します。右クリック→プロパティ→セキュリティ→編集→追加→「everyone」と入力→ユーザーeveryoneに権限を付与→OK。
10、IISを登録します。すべてのプログラムで大文字Vを見つけ、「Visual Studio 2013」→「Visual Studio Tools」→管理者として「VS2013開発者コマンドプロンプト」を選択し、CMDに入ります。入力"aspnet_regiis -i"。
11、これで公開が完了しました。
12、テスト。ブラウザのアドレスバーに:」http://localhost:8090/sessionDemo.aspx"と入力し、アクセスします。
13、これで、IISでのサイト公開プロセスが完了しました。
四、IIS設定の注意点
1、IISの登録問題
すべてのプログラムで大文字Vを見つけ、「Visual Studio 2013」→「Visual Studio Tools」→管理者として「VS2013開発者コマンドプロンプト」を選択し、CMDに入ります。入力"aspnet_regiis -i"。
2、権限不足問題
VSで公開したファイルを右クリック→プロパティ→セキュリティ→編集→追加→「everyone」と入力→ユーザーeveryoneに権限を付与→OK。
3、ファイアウォール問題
ローカルネットワーク内でアクセスできない場合は、ほとんどがファイアウォールの問題です。ファイアウォールを直接無効にするとセキュリティ上のリスクがあるため、以下の解決方法を推奨します。
HTTPサービスはデフォルトで80ポートを使用します。ファイアウォール(特にシステムに付属のファイアウォール)でHTTPサービス(80ポート)を有効にするだけで済みます。他のファイアウォールを使用している場合も、同様の操作が必要です。
a、スタート→すべてのプログラム→管理ツール→高度なセキュリティWindowsファイアウォール→高度なセキュリティWindowsファイアウォールの左側のバーで「受信ルール」を選択→右側のバーで「新しいルール」を選択→ポップアップウィンドウで順番に選択:ポートを選択→次へ→TCPを選択し、特定のローカルポートに開放するポート番号を入力(ここでは80を入力;もちろんすべてのポートを開放することも可能→次へ→接続を許可→次へ→すべてのオプションを選択→次へ→名前を入力(ここではIISと入力)。
4、IISのインストールが成功したか確認
ブラウザのアドレスバーにhttp://localhostと入力し、以下のインターフェースが表示されれば、インストールが成功したことを示します。
5、ポート問題
httpのデフォルトポートは:80、IIS公開時に他のポートを選択します。
6、アプリケーションプールは、サイト名と同じものを選択し、統合方式を選択(両方とも公開が成功しない場合は、クラシックと統合を切り替えてテストできます)、バージョンはV4を選択します。
7、VS公開時は、DebugバージョンではなくReleaseバージョンを選択し、CPUはany CPUを選択します。
8、上記以外の問題もありますが、順次更新していきます。
補足:IISサーバーに自分の最初のアプリケーションを公開する
-
コンピューターのハードディスクのどこかでフォルダを作成し、「IIS HTMLサイト」と名付けます。以下の図のように:
-
テキストドキュメントを作成し、helloworld.htmlと名付け、拡張子を**.txtから.html**に変更します。以下の図のように:
-
このhelloworld.htmlをメモ帳で開き、以下のhtmlコードを記述します:
<html>
<head>
<title>これはIISにデプロイされた最初のアプリケーションです</title>
</head>
<body>
Hello World、これは私の最初のIISアプリケーションです。
</body>
</html>
以下の図のように:
-
コントロールパネルを開き、「管理ツール」を見つけ、ダブルクリックして開き、「Internet信息服务(IIS)マネージャ」を見つけます。以下の図のように:
-
「Internet信息服务(IIS)マネージャ」を開き、「サイト」ノードを展開し、右クリック「Default Web Site」を選択し、「アプリケーションの追加...」を選択します。以下の図のように:
-
開いた**「アプリケーションの追加」ダイアログで、サイトにエイリアスBaiDuを付け、アプリケーションプールを選択し、.NET Framework 2.0**があります。次に物理パスを選択します。ここでは第1ステップで作成したフォルダのパスです。設定が完了したら、「確定」をクリックします。以下の図のように:
-
左側のIISサイトに新しく作成したアプリケーションBaiDuが表示されます。クリックして「コンテンツビュー」を選択すると、以前に作成したhtmlファイルが表示されます。ファイルを右クリックし、「ブラウズ」を選択します。以下の図のように:
-
ブラウザが開き、アクセスします。ページのアクセス結果は以下のようになります:
-
これは単純なHTMLページですが、asp.netを使用してWebサイトを開発し、IISサーバーにデプロイすることもできます。