例えば、angular2-quickstartを取り上げます。 IISからこのWebアプリを起動するには、どのファイルを展開する必要があり、どの設定を設定する必要がありますか?
これは、JavaScriptにコンパイルすることを選択したTypeScriptチュートリアルです。
Angular 2のセットアップは、HTML5ルート(ハッシュバンなし)が機能していなかったため、非常に問題でした。
servingなしでIIS環境で動作するAngular2プロジェクトを取得するには、 Angular-CLI (まだビルドする必要があります!):
必要な最短のビルドコマンドは次のとおりです。
ng b
buildフォルダー(外部/異なるフォルダーを追加しなかった場合、これは 'distになります 'プロジェクト内のフォルダー)、コンテンツをIISサーバーにコピーします。
IISサーバーのフォルダーに、IIS_IUSRSグループとIUSRユーザーがアクセスするために必要な許可があることを確認します。 (フォルダ->プロパティ->セキュリティ->編集->追加を右クリックして入力します。「名前の確認」ボタンをクリックして、入力したものが正しいことを確認します)
取り組む必要がある次の問題は、ルーティングの問題を修正するために、サーバーフォルダーに配置するweb.configファイルを取得することです。
Apacheで作業している場合、.htaccessが必要ですが、IISの場合はweb.configを使用しています。見つかったもの here は、アプリケーションがサーバーのルートディレクトリからルーティングしている場合に役立ちます。 (注:@Demortesで思い出されるように、これには URLRewrite と呼ばれる追加モジュールをIIS環境に追加する必要があります)
この(web.config)ファイルは、サーバーのrootディレクトリに入ります。
これが私と同様の問題を抱えている人の助けになることを願っています:)
乾杯。
ダウンロードしてインストールIIS rewrite plugin https://www.iis.net/downloads/Microsoft/url-rewrite
デフォルトのWebサイトの下にアプリケーションを作成します。
Index.htmlでビルドする前に、base href = "/"をbase href = "//"に変更します
Web構成構造。
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Main Rule" >
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/<appname subfolder>/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
適用できません
Angular-cli.jsonで、web.configをアセットブロックに入れます
"assets": [
"assets",
"favicon.ico",
"Web.config"
],
Angular-cli.josnにカスタムCSSパスの例を配置して、styles..bundle.csにパッケージ化されるようにします
"styles": [
"../node_modules/font-awesome/css/font-awesome.min.css",
"../node_modules/bootstrap/dist/css/bootstrap.min.css",
"assets/site.css",
"assets/page.css",
"assets/menu.css",
"styles.css",
"../node_modules/primeng/resources/primeng.min.css",
"../node_modules/primeng/resources/themes/omega/theme.css"
],
カスタムスクリプトがある場合、スクリプトセクションの例の下にそれらのパスを入れます
"scripts": [
"../node_modules/jquery/dist/jquery.js",
"index.js"
],
ng build --prod
代替ビルドコマンド:
ng build --prod --output-path 'C:\inetpub\wwwroot\<appname subfolder>' --base-href /<appname subfolder>'/
b-アプリのdistフォルダーとwwwrootフォルダーをコピーしたくない場合。
注1:次のコマンドは、管理者権限でビジュアルコード(またはターミナルアプリ)を開いた場合にのみ機能します。そうしないと、wwwrootに出力フォルダーを作成するmkdirコマンドが失敗します。
投稿のいずれかから直接引用を確認してください。 Webリンクの1つで説明されているように... wwwroot \のIIS_IUSRSグループおよびIUSRユーザーのセキュリティ特権を変更する必要があるかどうかはわかりません。必須ではないかもしれませんが、念のためにここで強調しています。
別の用途からの直接引用: "IISサーバーのフォルダーに、IIS_IUSRSグループおよびIUSRユーザーがアクセスするために必要なアクセス許可があることを確認します。フォルダーを右クリック->プロパティ->セキュリティ-> [編集]-> [追加]で入力します。[名前の確認]ボタンをクリックして、入力した内容が正しいことを確認します)
参考資料:- Angular2をIISに展開する方法と内容 - https://www.youtube.com/watch?v=K0XORWxG11k
Webapp自体は静的なファイル-Webアセット(* .js、*。htmlファイルなど)であるため、サーバーインテリジェンスは必要ありません。静的ファイルは何ですかangular2-quickstart
は、outputとして生成し、そのbuildプロセスで実行します。開発環境(おそらくローカルコンピューター)。開発環境にはnode
(+ npm
)が必要です。実際、外部サーバーを使用せずにローカルの開発環境でこのチュートリアルをテストできます。
編集:package.jsonを見ると、lite-serverがあることがわかります:
"scripts": {
"start": "npm run lite",
"lite": "lite-server"
},
Liteサーバーは、単純な(Web)ファイルサーバーをシミュレートする小さなサーバーです。
Webアプリを提供し、ブラウザーで開き、htmlまたはjavascriptの変更時に更新し、ソケットを使用してCSSの変更を挿入し、ルートが見つからない場合にフォールバックページを持つ軽量開発専用ノードサーバー。
答えを出すには、IISでアプリを提供するために、 http://docs.asp.net/en/latest/fundamentals/static-files.html のみが必要です。
ここ は、IISでangularアプリを展開するための素敵で詳細な説明です。別のWebサイトとして公開するための要約された手順は次のとおりです。
ng build --prod
Web.configファイルを次の内容でフォルダーC:\ Publishに追加します-
<configuration> <system.webServer> <rewrite> <rules> <rule name = "Angular Routes" stopProcessing = " true "> <match url ="。* "/> <conditions logicalGrouping =" MatchAll "> <add input =" {REQUEST_FILENAME} "matchType =" IsFile " negate = "true" /> <add input = "{REQUEST_FILENAME}" matchType = "IsDirectory" negate = "true" /> </ conditions> <アクションタイプ= "Rewrite" url = "/" /> </ rule> </ rules> </ rewrite> </ system.webServer> </ configuration>
すべて完了しました。IISに移動してWebサイトを参照すると、動作していることがわかります。
IISでは、Angular 2ルーティング(ハッシュあり)は問題なく機能します。すべてのリクエストをangularアプリのindex.htmlファイルにリダイレクトするデフォルトのURL書き換えルールを作成するだけです。ルールは、必要なjsファイルと実際のangularアプリURL(つまり、index.htmlまたはindex.html#/ {route-value}を除くすべてのリクエストをindex.htmlにリダイレクトします。
例:
<rules>
<rule name="Default">
<match url="(.* ).js|index.html(.*)" negate="true" />
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
IISでは、Angular 2ルーティング(ハッシュなし)は機能しません。 純粋なHTMLアプリケーションの場合 IISは着信要求をルーティングし、そのようなページがその場所に存在しない場合、要求をエラーページにリダイレクトします。
。Net MVCアプリケーションの場合すべての着信リクエストURLを処理し、それをangularインデックスビューにリダイレクトするデフォルトルートを作成できます。
MVCアプリケーションのEx Route:
routes.MapRoute(
name: "Angular",
url: "{*url}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { url = new AppFeatureUrlConstraint() }
public class AppFeatureUrlConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
if (values[parameterName] != null)
{
var url = values[parameterName].ToString();
if (url.StartsWith("angular/", StringComparison.InvariantCultureIgnoreCase))
return true;
else
return false;
}
return false;
}
}
今日(2016年10月13日)の時点でAngular2が現在実行されている小さなgithubプロジェクトを作成しました。これはIIS 7.5でルーティングおよびng serveの下で実行されます。ハッシュベースのURL戦略を使用します。これは、angular-cliを使用し、IISまたはng serveでのセットアップ方法についての詳細が記載されています。