it技術:web開発
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
it技術:web開発 [2018/09/03 02:13] – [「@Scripts」と「@Style」が使えない] yajuadmin | it技術:web開発 [2022/02/18 10:16] – [jQuery] yajuadmin | ||
---|---|---|---|
行 1: | 行 1: | ||
====== Web開発(ASP.NET系) ====== | ====== Web開発(ASP.NET系) ====== | ||
- | [[http:// | + | ===== はじめに ===== |
- | [[http:// | + | * [[http:// |
+ | | ||
+ | |||
+ | ===== IISのバージョンとWindows OS ===== | ||
+ | ^サーバーOS^クライアントOS^IIS^ | ||
+ | |Windows Server 2019| |IIS 10| | ||
+ | |Windows Server 2016|Windows 10|IIS 10| | ||
+ | |Windows Server 2012 R2|Windows 8.1|IIS 8.5| | ||
+ | |Windows Server 2012|Windows 8|IIS 8.0| | ||
+ | |Windows Server 2008 R2|Windows 7|IIS 7.5| | ||
+ | |Windows Server 2008|Windows Vista|IIS 7.0| | ||
+ | |Windows Server 2003| |IIS 6.0| | ||
+ | | |Windows XP|IIS 5.1| | ||
+ | |Windows 2000| |IIS 5.0| | ||
===== HTMLカラーコード ===== | ===== HTMLカラーコード ===== | ||
- | [[http:// | + | * [[http:// |
+ | * [[https:// | ||
===== 画面レイアウト(Bootstrap) ===== | ===== 画面レイアウト(Bootstrap) ===== | ||
行 11: | 行 25: | ||
* ライセンスは MIT License で、商用利用も可能です。 | * ライセンスは MIT License で、商用利用も可能です。 | ||
- | ※ASP.NETのBoostrap 3.3.7は、jQuery | + | <wrap em> |
- | 参照 | + | ==== 参照 |
* [[http:// | * [[http:// | ||
- | * [[http://bootstrap3.cyberlab.info/|Bootstrap3日本語リファレンス]] | + | * [[https://getbootstrap.jp/docs/4.2/ |
* [[https:// | * [[https:// | ||
* [[http:// | * [[http:// | ||
行 21: | 行 35: | ||
===== jQuery ===== | ===== jQuery ===== | ||
- | 2017/03/21現在の最新版は「jQuery 3.1.1」となる。 | + | 2022/02/18現在の最新版は「jQuery 3.6.0」となる。 |
^1.1x系|Internet Explorer 8(IE8)の下位バージョンに対応| | ^1.1x系|Internet Explorer 8(IE8)の下位バージョンに対応| | ||
行 108: | 行 122: | ||
ASP.NETアプリケーションは初回のページ呼び出しがあった時に、アプリケーションの初期処理(ビルドなど)が実施されます。そのため、ファーストユーザーがページにアクセスした時に遅いと感じることがあります。 | ASP.NETアプリケーションは初回のページ呼び出しがあった時に、アプリケーションの初期処理(ビルドなど)が実施されます。そのため、ファーストユーザーがページにアクセスした時に遅いと感じることがあります。 | ||
- | IISのApplication Initialization機能を有効にしておくと、起動時にIISがアプリケーションを呼び出しておいてくれます。そのため最初のユーザーがアクセスした時の体感速度を向上させることができます。 | + | IIS 8.0 で標準搭載された |
+ | ==== Application Initialization ==== | ||
+ | IIS は、既定でサービス開始直後にワーカープロセスを起動しません。ユーザーからのリクエストを受けてからワーカープロセスを起動し、その中で ASP.NET の初期処理などを行っています。結果、最初にリクエストを行うユーザーは、通常時と比べて応答に時間がかかる (初期化が完了するまで待たされる) こととなります。 | ||
+ | |||
+ | この初回リクエストにかかるコストを軽減するための機能として Application Initialization が提供されており、自動的にワーカープロセスを起動させる機能と、仮想的な要求を内部的に発行し、該当の初期化処理を事前に終わらせる機能、の組み合わせで実現されています。\\ | ||
+ | [[https:// | ||
==== 設定 ==== | ==== 設定 ==== | ||
- | [[http:// | + | [[http:// |
+ | |||
+ | ^アプリケーションプール設定|startMode=" | ||
+ | ^Webサイト設定|preloadEnabled=" | ||
+ | ^Web.Config|doAppInitAfterRestart はデフォルト false \\ skipManagedModules はデフォルト false| | ||
+ | |||
+ | <code xml web.config> | ||
+ | < | ||
+ | < | ||
+ | <add initializationPage="/ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === 参照 === | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |アプリプールのリサイクル後にasp.net mvc webappをウォームアップするにはどうすればよいですか?]] | ||
+ | * [[https:// | ||
+ | |||
+ | ==== 調査 ==== | ||
+ | IIS applicationInitializationリクエストは内部で行われるため、W3Cログには表示されません。 | ||
+ | ただし、Initializer.aspxページでリクエストを確認し、ユーザーエージェントを確認すると、「IIS Application Initialization Warmup」か「IIS Application Initialization Preload」が表示されます。 | ||
+ | |||
+ | <code csharp Initializer.aspx> | ||
+ | namespace SampleWebApp | ||
+ | { | ||
+ | public partial class Initializer : System.Web.UI.Page | ||
+ | { | ||
+ | protected void Page_Load(object sender, EventArgs e) | ||
+ | { | ||
+ | // | ||
+ | System.Threading.Thread.Sleep(10000); | ||
+ | |||
+ | // ログ・ファイルerr.logへの出力ストリームを生成 | ||
+ | StreamWriter objSw = new StreamWriter( | ||
+ | Server.MapPath(" | ||
+ | true, Encoding.GetEncoding(" | ||
+ | |||
+ | // 日付、ソース・コード、エラー・メッセージ、エラー原因となった | ||
+ | // メソッドをタブ区切りテキストで記録 | ||
+ | StringBuilder objBld = new StringBuilder(); | ||
+ | objBld.Append(DateTime.Now.ToString()); | ||
+ | objBld.Append(" | ||
+ | objBld.Append(Request.UserAgent); | ||
+ | objSw.WriteLine(objBld.ToString()); | ||
+ | objSw.Close(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <code xml web.config> | ||
+ | < | ||
+ | < | ||
+ | <add initializationPage="/ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <code txt init.log> | ||
+ | 2020/03/04 16: | ||
+ | </ | ||
==== 参照 ==== | ==== 参照 ==== | ||
行 159: | 行 246: | ||
これでも駄目なら、ソリューションファイルとプロジェクトを一から作り直す。 | これでも駄目なら、ソリューションファイルとプロジェクトを一から作り直す。 | ||
+ | |||
+ | ===== リソースが見つかりません ===== | ||
+ | POSTを使用すると、「リソースが見つかりません」というエラーが表示されます。\\ | ||
+ | GetSQLDataのコントローラーが見つからないか、IControllerを実装していません。 | ||
+ | |||
+ | 原因としてコントローラーの指定が間違っている。 | ||
+ | |||
+ | <code javascript 例> | ||
+ | postAjax(' | ||
+ | ↓ | ||
+ | postAjax('/ | ||
+ | </ | ||
+ | ===== 発行先だと動作しない ===== | ||
+ | Visual Studio上のWebブラウザでは動作したが、発行した環境ではエラーになる。\\ | ||
+ | Visual Studio上ではIIS Expressで動かしていた。 | ||
+ | |||
+ | ==== URL先が違う ==== | ||
+ | 開発では、localhost 直下であったが、発行した環境では、仮想ディレクトリ のエイリアス(例 Test)が付く | ||
+ | |||
+ | < | ||
+ | http:// | ||
+ | ↓ | ||
+ | http:// | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | 先頭の"/" | ||
+ | Redirect("/ | ||
+ | ↓ | ||
+ | Redirect(" | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | jQuery.ajax({ | ||
+ | url: '/ | ||
+ | ↓ | ||
+ | jQuery.ajax({ | ||
+ | url: method, | ||
+ | </ | ||
+ | |||
+ | ==== Windowsサービスの操作ができない ==== | ||
+ | Visual Studio上のWebブラウザでは動作していたので、権限の問題。 | ||
+ | |||
+ | === 対象1 === | ||
+ | IISのアプリのアプリケーションプールの詳細設定にある、「アプリケーションID」を「ApplicationPoolIdentity」から「LocalSystem」に変更する。\\ | ||
+ | Local System アカウントは Web サーバーの Administrators グループに含まれるアカウントである。 | ||
+ | [[http:// | ||
+ | |||
+ | === 対象2 === | ||
+ | IISのアプリのアプリケーションプールの詳細設定にある、「アプリケーションID」を「ApplicationPoolIdentity」のまま。 | ||
+ | web.configに「identity impersonate=" | ||
+ | |||
+ | ASP.NETにはユーザの偽装の機能があり、アクセス権が絡むときに使用する。 | ||
+ | |||
+ | <code xml web.config> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
===== Tips ===== | ===== Tips ===== | ||
行 210: | 行 362: | ||
</ | </ | ||
- | ==== フォントのwoff2ファイルのMIME登録 ==== | + | ==== フォントのwoffとwoff2ファイルのMIME登録 ==== |
- | IIS上でbootstrapのwoff2ファイルを使う際には注意が必要。デバッグ時にはエラーにならない。\\ | + | IIS上でbootstrapのwoffとwoff2ファイルを使う際には注意が必要。デバッグ時にはエラーにならない。\\ |
- | MIMEにフォントの「woff2」の拡張子が登録されていないため取得できない旨の404エラーが出る。 | + | MIMEにフォントの「woff」と「woff2」の拡張子が登録されていないため取得できない旨の404エラーが出る。 |
- | [[http:// | + | * [[http:// |
+ | * [[https:// | ||
IISでMIMEの追加をすればよいが、設定忘れも考慮してWeb.configに設定を追加する方法がある。\\ | IISでMIMEの追加をすればよいが、設定忘れも考慮してWeb.configに設定を追加する方法がある。\\ | ||
- | MVCの場合、Viewにあるweb.configに下記の設定を追加する。 | + | 直下のweb.configに下記の設定を追加する。 |
<code xml web.config> | <code xml web.config> | ||
< | < | ||
< | < | ||
+ | <remove fileExtension=" | ||
+ | <mimeMap fileExtension=" | ||
<remove fileExtension=" | <remove fileExtension=" | ||
<mimeMap fileExtension=" | <mimeMap fileExtension=" | ||
行 226: | 行 381: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | Windows Server 2008R2のIIS 7.5 には、「woff」と「woff2」が未登録\\ | ||
+ | Windows Server 2012R2のIIS 8.5 には、「woff2」が未登録 | ||
+ | |||
==== " | ==== " | ||
- | [[https:// | + | * [[https:// |
+ | * [[http:// | ||
==== jQueryの読込みの順番 ==== | ==== jQueryの読込みの順番 ==== | ||
行 240: | 行 400: | ||
==== 「@Scripts」と「@Style」が使えない ==== | ==== 「@Scripts」と「@Style」が使えない ==== | ||
- | @Scripts.Renderと@Style.Render を使いたいがコマンドを認識してくれない。 | + | @Scripts.Render と @Style.Render を使いたいがコマンドを認識してくれない。 |
NuGetで「Microsoft.AspNet.Web.Optimization」をインストールする。\\ | NuGetで「Microsoft.AspNet.Web.Optimization」をインストールする。\\ | ||
行 252: | 行 412: | ||
* [[https:// | * [[https:// | ||
* [[http:// | * [[http:// | ||
+ | |||
+ | ==== submitイベントを利用する方法 ==== | ||
+ | [[https:// | ||
+ | |||
+ | <code html> | ||
+ | @using (Html.BeginForm(" | ||
+ | |||
+ | <script type=" | ||
+ | $('# | ||
+ | // ローディング画面表示 | ||
+ | ShowLoading(); | ||
+ | }); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== IE11で正しくレイアウトされない ==== | ||
+ | 互換性表示されると、IE7モードで動作する。IISログにcompatible; | ||
+ | |||
+ | 再現環境\\ | ||
+ | * インターネットオプション[接続][LANの設定][プロキシ設定]にプロキシサーバを登録。 | ||
+ | * 詳細設定から、対象のIPアドレスが例外になるように登録。 | ||
+ | * 互換表示設定で「イントラネットサイトを互換表示で表示する」チェック有り。 | ||
+ | |||
+ | 対応として、互換表示にならないように常に標準モードになる< | ||
+ | <meta http-equiv=" | ||
+ | |||
+ | [[https:// |
it技術/web開発.txt · 最終更新: 2022/10/28 10:22 by yajuadmin