- PR -

ウェブサイトの更新

投稿者投稿内容
Furi2
ベテラン
会議室デビュー日: 2004/10/28
投稿数: 74
お住まい・勤務地: N.Hollywood/Agoura Hills
投稿日時: 2006-07-12 03:10
またまた初歩的な質問でスミマセン。

ASP.NET2.0で(最近アップグレードしました)コードのちょっとした修正があったので、リビルドしてDLLをアップロードし直すと、.aspxと.ascxには何にも変更点がないのに、それらも全てアップロードし直さないとエラーになってしまいます。これを回避するにはどうしたらよいでしょうか?それとも回避しないほうがよいのでしょうか?ページが多いとアップロードの時間もばかにならないので、何とかならないかと思ったのですが。。
アドバイスお願い致します!
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-07-12 07:58
エラーといってもいろいろありますしね。何でしょう。
_________________
囚人のジレンマな日々
Vacant-Eyes
ベテラン
会議室デビュー日: 2004/08/15
投稿数: 97
投稿日時: 2006-07-12 10:00
ビルド前後でのaspxファイルの@Pageディレクティブ(ascxは@Controlディレクティブ)を見比べてみましょう。

その後、DLL名を見てみましょう。


[ メッセージ編集済み 編集者: Vacant-Eyes 編集日時 2006-07-12 10:03 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-12 10:40
ASP.NETの1.1ではコードビハインドの部分が事前にコンパイルされdllになるので、
その部分だけをサーバにアップロードできました。
2.0ではコードビハインドの部分を含めて実行時にコンパイルされます。
dll「だけ」をアップロードしたのだとすると、コードビハインド等に含まれる
修正箇所分はサーバに反映されていないことになります。
そのためにエラーが発生した、ということはないでしょうか。

> ページが多いとアップロードの時間もばかにならないので、何とかならないかと思ったのですが。。。

2.0では事前コンパイルという手段が使えます。
aspnet_compiler.exeを使うかVSから発行メニュー(だったかな?)を使うと、aspxを
含めて全体をコンパイルし、その結果作成されるdllをサーバ上に発行する、といった
ことが可能です。
ほかに、aspxは残してコードビハインド部分だけをdll化するということもできます。
これを検討してみるのもいいと思います。
Furi2
ベテラン
会議室デビュー日: 2004/10/28
投稿数: 74
お住まい・勤務地: N.Hollywood/Agoura Hills
投稿日時: 2006-07-13 14:40
皆様、助かります。書き込みのお礼が遅れて大変失礼しました。

引用:

どっとねっとふぁんさんの書き込み (2006-07-12 10:40) より:
ASP.NETの1.1ではコードビハインドの部分が事前にコンパイルされdllになるので、
その部分だけをサーバにアップロードできました。
2.0ではコードビハインドの部分を含めて実行時にコンパイルされます。
dll「だけ」をアップロードしたのだとすると、コードビハインド等に含まれる
修正箇所分はサーバに反映されていないことになります。
そのためにエラーが発生した、ということはないでしょうか。




そうなんですか!全く無知ではずかしいです。。が、つまり2.0では.csファイルもアップロードしなければならない、、ということなんでしょうか????

引用:

2.0では事前コンパイルという手段が使えます。
aspnet_compiler.exeを使うかVSから発行メニュー(だったかな?)を使うと、aspxを
含めて全体をコンパイルし、その結果作成されるdllをサーバ上に発行する、といった
ことが可能です。
ほかに、aspxは残してコードビハインド部分だけをdll化するということもできます。
これを検討してみるのもいいと思います。




私が使っている(知る唯一の)方法は、そのaspxを残す方法だと思います。(それ以外に方法があるとも知りませんでした。。)VSから私のサーバーのFTPの接続が今一スムーズでないので、まずローカルにPublish Website(多分ウェブの発行になるのかな?)して、特定のフォルダにアウトプットされたページとDLLをアップロードしてました。その際.csファイルは現れません。コードに変更があったので、もう一度ローカルにPublishして、出来上がったものの中でDLLのみをアップロードしたところ、HTTPアプリケーション・エラーとやらになったしまいました。

Vacant-Eyesさんやどっとねっとふぁんさんに指摘していただいたことを参考に、もういちどリサーチしてみます。どうもありがとうございました!


[ メッセージ編集済み 編集者: Furi2 編集日時 2006-07-13 14:43 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-13 15:11
Webの発行を使われているようですね。
この場合、事前にコンパイルされるので、csファイルはありません。
基本的にはdllをアップロードすればいいはずです。

#このときローカルサーバ上に作成されたaspxファイルの中を見てみると
 面白いですよ。きっと想像したものと違うものになってますから(w

> 出来上がったものの中でDLLのみをアップロードしたところ、
> HTTPアプリケーション・エラーとやらになったしまいました。

うーん、ちょっと状況がわからないですね。
Web.configの設定を変えても詳しいエラーは表示されないでしょうか?

あとは何かなぁ。

作成されるdllは一つ、、、じゃないですね。
ascxがあるようなのでいくつかのdllができると思います。
このとき、すべてのdllをアップロードしてますでしょうか。
Furi2
ベテラン
会議室デビュー日: 2004/10/28
投稿数: 74
お住まい・勤務地: N.Hollywood/Agoura Hills
投稿日時: 2006-07-14 08:40
引用:


#このときローカルサーバ上に作成されたaspxファイルの中を見てみると
 面白いですよ。きっと想像したものと違うものになってますから(w





空のファイルを期待すべきということですよね??(違ってたらすみません)。でも作成されたものは通常通りのaspxファイルでした。あと正確でなくて申し訳ありませんでした、アップロードしたのはbinフォルダーにできたもの全てです。dllが10個と、.preconpiledが2つです。

正確なエラーをお伝えしようと、そのエラーを再現したいのですが、また新たな壁にぶち当たっています。そのプリコンパイルされたフォルダを丸々コピーして、ダミーサイトを作ろうとしたのですが、今度はそのダミーサイトが全く応答してくれません。ブラウザに

Server Application Unavailable
The web application you are attempting to access on this web server is currently unavailable. Please hit the "Refresh" button in your web browser to retry your request.

Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server. Please review this log entry to discover what caused this error to occur.

と表示され、どうIISの調整をがんばってもこの画面以外表示してくれません。。ブラウザのログを見ろといわれても、ログがどこにあるのか今一わからないし。。プロジェクトの名前とバーチャル・フォルダの名前って関係あるんでしょうか?実は前も同じことが起こって、バーチャル・フォルダとプロジェクト(アプリケーション?)の名前を同じにしたら解決したことがありました。でも既に実際にあるのと同じ名前のものは作れないし。。
夜まで待って実のサイトで試して見ようと思います。。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-14 12:04
> でも作成されたものは通常通りのaspxファイルでした。

事前コンパイルはオプションの設定でaspxファイルをそのまま残す形にすることが
できます。
このオプションが使われているのでしょうね。
で、この場合ですけど、aspxファイルのPageディレクティブを見ると、inheritsの
設定があって、どのdllを参照するか設定されています。
dll名は事前コンパイル時に決定するので、Webの発行をするたびにdll名は変わると
いうことになります。

この場合、以前にあったdllを消すとともに、新しいdllと新しいdllを参照している
aspx、つまり全体をアップロードしないと整合性がとれなくてエラーになりますね。
現状はこの状態になっていると考えられます。

ちょっと試してはないですが、プロジェクトのプロパティのページのMSBuildオプション
のところに「このプリコンパイル済みサイトを更新可能にする」というチェックが
あるので、このチェックをはずしてWebサイトの発行を行うと、aspxも含めた
全体がコンパイルされて、dllだけをアップロードする形にできるかもしれません。

なお、システムをバージョンアップする場合に便利な機能として、ASP.NETでは
App_Offline.htmを利用できます。
http://dotnetfan.org/blogs/dotnetfanblog/archive/2005/10/07/413.aspx

こういった機能を利用して作業中であることを明確にしてバージョンアップを
行うのもよいかと思います。

スキルアップ/キャリアアップ(JOB@IT)