次の方法で共有


IIS7.5にて'/' アプリケーションでサーバー エラーが発生しました。

質問

2014年7月23日水曜日 1:17

お世話になっております。

早速ですが、

'/' アプリケーションでサーバー エラーが発生しました。

オブジェクト参照がオブジェクト インスタンスに設定されていません。
説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

例外の詳細: System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。

ソース エラー:

現在の Web 要求の実行中にハンドルされていない例外が生成されました。障害の原因および発生場所に関する情報については、下の例外スタック トレースを使って確認できます。 

スタック トレース:

[NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。]
   Microsoft.AspNet.FriendlyUrls.FriendlyUrlsModule.RedirectToFriendlyUrl(HttpContextBase httpContext, IFriendlyUrlRoute route, IVirtualPathUtility virtualPathUtility) ;568
   Microsoft.AspNet.FriendlyUrls.FriendlyUrlsModule.<Init>b__0(Object sender, EventArgs e) ;316
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() ;79
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) ;164

が発生します。

A環境(開発) Windows7 64bit Visual Studio2013

B環境(サーバー) windows2008 standard R2 IIS7.5

A環境のVisual Studio2013にてファイル→新規作成→Webサイト→ASP.NET Web フォームサイト→OK

そのままA環境のC:\inetpub\www で発行。

その後、B環境IIS7.5よりサイト右クリック→Webサイトの追加→構築後バインド:8080 に割り当てました。

この状態で上記エラーが発生してしまいます。原因わかるかたいらっしゃいますでしょうか?

■やったこと&確認事項

・IIS7.5にて.net信;レベルFull

・A環境のC:\inetpub\www はIUSR、IIS_IUSRSが読み取りと実行可能。

・A環境でC:\inetpub\wwwを 8080を割り当てみるとちゃんと表示されています。

よろしくお願いします。

すべての返信 (8)

2014年7月24日木曜日 8:00 ✅回答済み | 1 票

B サーバーの IIS 上の Default Web Site にアプリケーションを追加する。その際、その物理パスに開発マシン A の ASP.NET Web アプリのアプリケーションルートフォルダを指定し、Default Web Site 下のアプリケーションとしたいということですね。

他のサーバーの共有フォルダにある静的ファイルをブラウザを使って Web サーバー経由アクセスするため、他サーバーの共有フォルダを仮想ディレクトリに設定するという話はよく聞きますが、上のような話は初耳です。

自分が知らないだけと言う可能性は否定できませんが、そのようなことはできないのではないですか?

継承元の machine.config や web.config、Temporary ASP.NET Files フォルダにあるコンパイル済み .dll の取得、GAC の .dll の取得はどうなるのでしょう。必要なファイルは B サーバーではなく開発マシンに存在するはずですが、ASP.NET は B サーバーで動くのですから、B サーバー自身のフォルダを探しに行くと思います。それを考えるとうまくいくとは思えないのですが。

逆に質問して恐縮ですが、そういうことが可能であると書いてある MSDN など Microsoft の文書かあれば教えていただけると幸いです。


2014年7月23日水曜日 4:28

開発マシンの Visual Studio 2013 のテンプレートのどれかを使って Web アプリを作り、開発マシンの C:\inetpub\www に発行。その後何かした時サーバーエラーが出たらしいというところまでは何となく分かりましたが、それ以上分かりません。

もっと情報が提供できないでしょうか?

> A環境のVisual Studio2013にてファイル→新規作成→Webサイト→ASP.NET Web フォームサイト→OK

OK というのはどういう意味ですか?

Visual Studio から[デバッグ開始]または[デバッグなしで開始]すると、Web アプリは IIS Express 上で期待通り動いたということですか?

> そのままA環境のC:\inetpub\www で発行。

その目的は何ですか? 「A環境」というのは開発マシンですよね。開発マシンに発行してどういう意味があるのでしょうか?

> その後、B環境IIS7.5よりサイト右クリック→Webサイトの追加→構築後バインド:8080 に割り当てました。

ここが特に分かりません。その前に、開発マシンで作った Web アプリを Windows Server 2008 R2 に正しくインストールしたのでしょうか?

なぜ、ポート 8080 なのですか?

> この状態で上記エラーが発生してしまいます。原因わかるかたいらっしゃいますでしょうか?

上に書いてある最後のステップ「構築後バインド:8080 に割り当て」まででは NullReferenceException がスローされるようなサーバーエラーは出ないと思いますが?

「この状態」とはその後何かした時の話ではないですか? であれば、具体的に何をしたのか書いていただけませんか?

>・A環境でC:\inetpub\wwwを 8080を割り当てみるとちゃんと表示されています。

これも意味不明です。具体的に何をして何が表示されたのでしょうか?


2014年7月23日水曜日 8:03

**

A(開発環境)win64bit visual studio2013 iis7.5

B(サーバー)win2008r2 std 64bit  iis7.5

C(サーバー)win2008r2 std 64bit iis7.5 クラシックASPが;動

BからAを仮想化 (ttp://B/A)みたいなことをしたいです。(のちにBも仮想かされるので今のうちにテスト!とおもったらこけてます)

現状;動中のCサーバー(クラシックASP)をBで仮想化することはできます。

ttp://B/C いけます

ttp://C/B はアウトでした(ttp://A/B  ttp://B/A  はだめです)

クラシックは仮想化可能でほかはだめです。

>> A環境のVisual Studio2013にてファイル→新規作成→Webサイト→ASP.NET Web フォームサイト→OK

>OK というのはどういう意味ですか?

単純にWebサイトを作りますか?→OK(作ってください)という意味です。

>Visual Studio から[デバッグ開始]または[デバッグなしで開始]すると、Web アプリは IIS Express 上で期待通り動いたということですか?

デバッグ開始でも;動しますし、デバッグなしでも動きます。

A(開発環境)でその普通に動くものを、Aに8080で仮想化(意味ないですが・・)してもちゃんと表示できます。

流れは・・

ttp://A/ で動き

ttp://A:8080/ でも動くのを確認

ここでBからAを仮想化して動くかな?思い、

BのIISからAを仮想化(8080で)

ttp://B:8080/ で動くかと思いきや、動かない感じです(ttp://B/Aでも動きません)

>> そのままA環境のC:\inetpub\www で発行。

>その目的は何ですか? 「A環境」というのは開発マシンですよね。開発マシンに発行してどういう意味があるのでしょうか?

説明不足すみません。将来的に同じようなサーバーを追加しますので、そのとき困らないために開発環境のAをBのサーバーから仮想化できるか試しています。(Bサーバー自身が最終的には仮想化されます)

>> その後、B環境IIS7.5よりサイト右クリック→Webサイトの追加→構築後バインド:8080 に割り当てました。

>ここが特に分かりません。その前に、開発マシンで作った Web アプリを Windows Server 2008 R2 に正しくインストールしたのでしょうか?

>なぜ、ポート 8080 なのですか?

AからBに発行したWebアプリはBでもちゃんと;動します。

ttp://B:80 には自分の作っているサイトがあり、なんらかのエラーが出る可能性があったので、

ttp://B:8080 にVisual StudioのデフォルトWebアプリを仮想化しました。(アプリケーションプールは別)

8080ではなく、ttp://B/A としても同じエラーが出てしまいます。

>> この状態で上記エラーが発生してしまいます。原因わかるかたいらっしゃいますでしょうか?

>上に書いてある最後のステップ「構築後バインド:8080 に割り当て」まででは NullReferenceException がスローされるようなサーバーエラーは出ないと思いますが?

>「この状態」とはその後何かした時の話ではないですか? であれば、具体的に何をしたのか書いていただけませんか?

>・A環境でC:\inetpub\wwwを 8080を割り当てみるとちゃんと表示されています。

>これも意味不明です。具体的に何をして何が表示されたのでしょうか?

AでVisual studio2013のデフォルトwebサイトをAに発行(AのC:\wwwroot)→Bからそのサイトを仮想化です。

ttp://B:8080 (実際はAのc:\wwwroot) で仮想化したあとブラウザで ttp://B:8080 にアクセスしたらこんな感じのエラーです。(最初はアクセス権のエラーがでていたのでアクセス権を設定しなおしたらこのエラーにかわりました)

返信ありがとうございます。


2014年7月23日水曜日 11:17

つぎつぎに新しい情報が出てきますね・・・

> BからAを仮想化 (ttp://B/A)みたいなことをしたいです。

「仮想化」とはなんですか? 何となく仮想ディレクトリのことのような気がしますが・・・

「BからAを仮想化 (ttp://B/A)みたいなこと」をするというのは IIS で具体的にどのような設定をするのか教えていただけませんか?


2014年7月24日木曜日 0:19

>「仮想化」とはなんですか? 何となく仮想ディレクトリのことのような気がしますが・・・

すみません。仮想ディレクトリのことです。

>「BからAを仮想化 (ttp://B/A)みたいなこと」をするというのは IIS で具体的にどのような設定をするのか教えていただけませんか?

BサーバーのIISマネージャを立ち上げ、ツリービューのサイトの中のDefault Web Siteを右クリック

仮想ディレクトリの追加を押す

エイリアスに適当にtest1を入力

物理パスは //A/wwwroot を入力

接続を押す

特定ユーザで接続(administrator)

です。

後要らない情報かもしれませんが、Webサイト追加のほうは

BサーバーのIISマネージャのツリービューのサイトを右クリックします。

WEBサイトの追加を押します。

サイト名にtest2と入力。

物理パスにAのパス(//A/wwwroot)を入力。

特定ユーザで接続(administrator)

ポートに8080を入力。(IPアドレスは未使用のIPアドレスすべて)

を実行していました。

よろしくお願いします。


2014年7月24日木曜日 10:16

             

>B サーバーの IIS 上の Default Web Site にアプリケーションを追加する。その際、その物理パスに開発マシン A の ASP.NET >Web アプリのアプリケーションルートフォルダを指定し、Default Web Site 下のアプリケーションとしたいということですね。

そうです。それが困難すぎて仮想ディレクトリや8080に割り振ったりといらんことしていました。

>他のサーバーの共有フォルダにある静的ファイルをブラウザを使って Web サーバー経由アクセスするため、他サーバーの共有フォ>ルダを仮想ディレクトリに設定するという話はよく聞きますが、上のような話は初耳です。

>自分が知らないだけと言う可能性は否定できませんが、そのようなことはできないのではないですか?

>継承元の machine.config や web.config、Temporary ASP.NET Files フォルダにあるコンパイル済み .dll の取得、GAC >>の .dll の取得はどうなるのでしょう。必要なファイルは B サーバーではなく開発マシンに存在するはずですが、ASP.NET は B >>サーバーで動くのですから、B サーバー自身のフォルダを探しに行くと思います。それを考えるとうまくいくとは思えないのですが。

>逆に質問して恐縮ですが、そういうことが可能であると書いてある MSDN など Microsoft の文書かあれば教えていただけると幸い>です。

なるほどです。Bサーバーでクラシックサーバーのhtmが仮想ディレクトリ化できたのでてっきりできると勘違いしていました。何度もすみませんでした。ありがとうございます。


2014年7月25日金曜日 2:11

URLの書き換えモジュールを使って特定のURLをローカルで動いているWebサーバーに転送する事はできます。

URL 書き換えモジュールの使用


2014年7月25日金曜日 4:26

ファイル共有に置くこと自体は可能だったように思いますけど、もちろん、少なくともIISのサーバ環境自身で、ASP.NETが動作する状態にきちんとセットアップされている前提での話ですね。