トップ回答者
ASP.NETのWebアプリケーションにおける更新方法について

質問
-
Visual Studio 2013にてASP.NETのWebアプリケーションを構築し、IISにて稼働しております。
OSはWindows Server2012 R2, Windows10 Pro, Windows7 Professionalの3種類です。
これまではVisual Studioの「ビルド」からWebの発行で配布しておりましたが、サーバーが物理的に離れてしまいました。
更新は随時かかりますし、別の担当者に更新の作業を依頼する都合上、極力手間を省きたいと思います。
自分としては、すでに構築された環境への更新になりますので
配布用のフォルダを上書きコピーするバッチを作って担当者に送り、実行してもらおうかと考えておりますが、
ASP.NET Webアプリケーションの一般的な更新方法等がございましたらご教示いただけますでしょうか?
回答
-
> 私の環境で更新したWebアプリケーションをAサーバーに配布するとなると、ローカルでWeb発行したデータをAサーバー管理者に送り、Aサーバーのwwwroot配下に上書きコピーしてもらうという発想になりました。
その「更新」の結果、A サーバー上のどのフォルダ / ファイルを書き換えなければならないかは把握していて、開発マシンの当該フォルダ / ファイルのみを「Aサーバー管理者」に送るということですか?
> SurferOnWwwさんのご回答ですと、FTPでアップロードとご提案いただきましたが、FTPが無理なら現地での上書きコピーのバッチ実行でも特に問題なさそうでしょうか?
であれば、作業を間違えたりする可能性は低そうですので、それでもよさそうだと思います。(私がそう思うだけです。もちろん保証の限りではありませんが)
ただ、以下の点には注意が必要だと思います。
Web アプリケーションプロジェクトの場合、コードビハインドのファイルその他 .cs ファイル(VB.NET なら .vb ファイル)は Visual Studio で単一アセンブリにコンパイルされ、結果生成された .dll ファイルが bin フォルダに配置されます。
一方、.aspx ファイル、MVC なら .cshtml などは A サーバーにソースのまま配置し、A サーバーが最初の要求を受けた際に動的にコンパイルします。
それらのファイルを配置し忘れるなんてことなないとしても、コンパイラに Roslyn を使っている場合など、A サーバーの設定によっては問題が出るかもしれませんので、注意が必要と思います。
そういう場合は、.aspx ファイル等も含めて全て開発環境でコンパイルして .dll のみ配置するというような対応が必要かもしれません。
【追伸】
Roslyn の問題は、結局は質問者さんのケースでは関係ないかもしれませんが、興味がありましたら以下の記事を見てください。
ASP.NET と Roslyn コンパイラの問題
http://surferonwww.info/BlogEngine/post/2016/05/10/problem-of-executing-roslyn-complier-for-aspnet-web-application-at-server.aspx- 編集済み SurferOnWww 2018年4月25日 3:22 追伸追加
- 回答としてマーク tt_nobu 2018年4月26日 8:00
すべての返信
-
サーバーがどう壊れてどう更新するのかわかりませんが、サーバー1台丸々交換で、OSのセットアップやIISの機能追加など環境の設定も全て行うということでしょうか? それは担当者が行うのでしょうか?
>配布用のフォルダを上書きコピーするバッチを作って担当者に送り、実行してもらおうかと考えておりますが、Webアプリケーションとして有効化するなどの作業も別途必要になると思います。
一般的かどうかはわかりませんが、そのケースであればWebアプリケーション毎にインストーラーを作成し、それを担当者に渡して実行してもらう方法も取れます。
もし、クリスタルレポート等を使っていれば、一時フォルダーの作成、およびそこへの権限設定なども必要になるかもしれません。★良い回答には質問者は回答済みマークを、閲覧者は投票を!
-
> これまではVisual Studioの「ビルド」からWebの発行で配布しておりましたが、
ということは、Web サイトプロジェクトではなく Web アプリケーションプロジェクトということでいいのですか?
#違いが分からなければ以下の記事を読んでください。
Web アプリケーション プロジェクトと Web サイト プロジェクト
https://msdn.microsoft.com/ja-jp/library/dd547590(v=vs.100).aspx> サーバーが物理的に離れてしまいました。更新は随時かかりますし、別の担当者に更新の作業を依頼する都合上、極力手間を省きたいと思います。
「サーバーが物理的に離れて」しまったために、Visual Studio の発行ツールが使えなくなってしまったということで、別の発行手段を探しているということでいいのですが?
上記の理解が合っていて、そのサーバーに FTP サーバーとしての機能を追加できるなら、まず開発マシンのローカル IIS に対して Visual Studio の発行ツールを使って発行し、FTP クライアントを使ってローカル IIS の新しいファイルのみサーバーにアップロードするという手段はいかがでしょう。 -
-
ご返信ありがとうございます。
本件、Webアプリケーション プロジェクトとなります。
> 「サーバーが物理的に離れて」しまったために、Visual Studio の発行ツールが使えなくなってしまったということで、別の発行手段> を探しているということでいいのですが?
おっしゃる通りです。
不足しておりました情報としては、遠隔地へ移動したサーバー(以下、Aサーバー)は外部から接続が許可されておりません。
私の環境で更新したWebアプリケーションをAサーバーに配布するとなると、
ローカルでWeb発行したデータをAサーバー管理者に送り、
Aサーバーのwwwroot配下に上書きコピーしてもらうという発想になりました。
SurferOnWwwさんのご回答ですと、FTPでアップロードとご提案いただきましたが、FTPが無理なら
現地での上書きコピーのバッチ実行でも特に問題なさそうでしょうか?
-
> 私の環境で更新したWebアプリケーションをAサーバーに配布するとなると、ローカルでWeb発行したデータをAサーバー管理者に送り、Aサーバーのwwwroot配下に上書きコピーしてもらうという発想になりました。
その「更新」の結果、A サーバー上のどのフォルダ / ファイルを書き換えなければならないかは把握していて、開発マシンの当該フォルダ / ファイルのみを「Aサーバー管理者」に送るということですか?
> SurferOnWwwさんのご回答ですと、FTPでアップロードとご提案いただきましたが、FTPが無理なら現地での上書きコピーのバッチ実行でも特に問題なさそうでしょうか?
であれば、作業を間違えたりする可能性は低そうですので、それでもよさそうだと思います。(私がそう思うだけです。もちろん保証の限りではありませんが)
ただ、以下の点には注意が必要だと思います。
Web アプリケーションプロジェクトの場合、コードビハインドのファイルその他 .cs ファイル(VB.NET なら .vb ファイル)は Visual Studio で単一アセンブリにコンパイルされ、結果生成された .dll ファイルが bin フォルダに配置されます。
一方、.aspx ファイル、MVC なら .cshtml などは A サーバーにソースのまま配置し、A サーバーが最初の要求を受けた際に動的にコンパイルします。
それらのファイルを配置し忘れるなんてことなないとしても、コンパイラに Roslyn を使っている場合など、A サーバーの設定によっては問題が出るかもしれませんので、注意が必要と思います。
そういう場合は、.aspx ファイル等も含めて全て開発環境でコンパイルして .dll のみ配置するというような対応が必要かもしれません。
【追伸】
Roslyn の問題は、結局は質問者さんのケースでは関係ないかもしれませんが、興味がありましたら以下の記事を見てください。
ASP.NET と Roslyn コンパイラの問題
http://surferonwww.info/BlogEngine/post/2016/05/10/problem-of-executing-roslyn-complier-for-aspnet-web-application-at-server.aspx- 編集済み SurferOnWww 2018年4月25日 3:22 追伸追加
- 回答としてマーク tt_nobu 2018年4月26日 8:00
-