none
ASP.NETのWebアプリケーションにおける更新方法について RRS feed

  • 質問

  • Visual Studio 2013にてASP.NETのWebアプリケーションを構築し、IISにて稼働しております。
    OSはWindows Server2012 R2, Windows10 Pro, Windows7 Professionalの3種類です。
    これまではVisual Studioの「ビルド」からWebの発行で配布しておりましたが、サーバーが物理的に離れてしまいました。
    更新は随時かかりますし、別の担当者に更新の作業を依頼する都合上、極力手間を省きたいと思います。

    自分としては、すでに構築された環境への更新になりますので
    配布用のフォルダを上書きコピーするバッチを作って担当者に送り、実行してもらおうかと考えておりますが、
    ASP.NET Webアプリケーションの一般的な更新方法等がございましたらご教示いただけますでしょうか?
    2018年4月25日 1:08

回答

  • > 私の環境で更新した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
    2018年4月25日 3:02

すべての返信

  • サーバーがどう壊れてどう更新するのかわかりませんが、サーバー1台丸々交換で、OSのセットアップやIISの機能追加など環境の設定も全て行うということでしょうか? それは担当者が行うのでしょうか?

    配布用のフォルダを上書きコピーするバッチを作って担当者に送り、実行してもらおうかと考えておりますが、

    Webアプリケーションとして有効化するなどの作業も別途必要になると思います。

    一般的かどうかはわかりませんが、そのケースであればWebアプリケーション毎にインストーラーを作成し、それを担当者に渡して実行してもらう方法も取れます。
    もし、
    クリスタルレポート等を使っていれば、一時フォルダーの作成、およびそこへの権限設定なども必要になるかもしれません。


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2018年4月25日 1:48
    モデレータ
  • > これまでは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 の新しいファイルのみサーバーにアップロードするという手段はいかがでしょう。

    2018年4月25日 2:01
  • 返信ありがとうございます。

    説明が悪くて申し訳ございません。壊れたのではなくて遠隔地へ移動してしまい、自前の開発環境からのVisual StudioでのWeb発行ができなくなりました。

    そして、IISや(クリスタルレポートも使っております。)フォルダの権限等も導入時に設定済みのサーバーに対してWebアプリケーションの更新を行う簡易的な方法がないものかと質問させていただきました。

    そこで、自分としてはバッチでIISをストップし、wwwroot配下のアプリケーションフォルダの中身を上書きし、IISをスタートさせれば良いかと考えておりました。

    2018年4月25日 2:08
  • ご返信ありがとうございます。

    本件、Webアプリケーション プロジェクトとなります。

    > 「サーバーが物理的に離れて」しまったために、Visual Studio の発行ツールが使えなくなってしまったということで、別の発行手段> を探しているということでいいのですが?

    おっしゃる通りです。
    不足しておりました情報としては、遠隔地へ移動したサーバー(以下、Aサーバー)は外部から接続が許可されておりません。

    私の環境で更新したWebアプリケーションをAサーバーに配布するとなると、
    ローカルでWeb発行したデータをAサーバー管理者に送り、
    Aサーバーのwwwroot配下に上書きコピーしてもらうという発想になりました。

    SurferOnWwwさんのご回答ですと、FTPでアップロードとご提案いただきましたが、FTPが無理なら
    現地での上書きコピーのバッチ実行でも特に問題なさそうでしょうか?


    2018年4月25日 2:30
  • > 私の環境で更新した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
    2018年4月25日 3:02
  • SurferOnWwwさんご返信ありがとうございます。

    注意点の補足も大変参考になりました。

    Roslynに関しては今回は関係ありませんが、記事読ませていただきます。
    重ねてお礼申し上げます。

    2018年4月25日 8:31
  • > Roslynに関しては今回は関係ありませんが、

    Roslyn は、自分では使うような設定をしたつもりは無くても、例えば Visual Studio Community 2015 のテンプレートを使って Web アプリのひな型を作った場合、「Web フォーム」はもちろん、「空」でも Roslyn を使う設定がデフォルトでなされます。そのあたりを確認されることをお勧めします。

    A サーバーの trust level が medium とかですと問題が出ます。

    2018年4月25日 9:57
  • ご返信ありがとうございます。

    なるほど、ひな形で定義されているということで注意したいと思います。

    今回はVisual Studio 2013でしたので、関係ないかと思っておりましたが、VS2015を使うこともございますので大変参考になっりました。いろいろとアドバイスお礼申し上げます。

    2018年4月26日 7:04
  • tt_nobu さん、こんにちは。フォーラム オペレーターの立花です。
    MSDN フォーラムをご利用くださいましてありがとうございます。

    フォーラム オペレーターからのお願いをさせてください。

    参考となる投稿をいただいた場合は、その投稿に [回答としてマーク] を
    ご設定いただき、後から同じ問題で閲覧した方が素早く情報を見つけられるよう
    ご協力くださいますよう、どうぞよろしくお願いいたします。


    参考になった投稿には回答としてマークの設定にご協力ください
    MSDN/TechNet Community Support 立花楓

    2018年4月26日 7:14
    モデレータ
  • 立花様

    すみませんでした。回答のマークをさせていただきました。

    2018年4月26日 8:01
  • tt_nobu さん、オペレーターの立花です。
    早々にご対応、およびご返信くださいまして誠にありがとうございます。

    今後とも、MSDN/Technet フォーラムをどうぞよろしくお願いいたします。


    参考になった投稿には回答としてマークの設定にご協力ください
    MSDN/TechNet Community Support 立花楓

    2018年4月26日 8:08
    モデレータ