- PR -

ASPXで別サーバのHTMLをインクルードする方法

投稿者投稿内容
あさべー
会議室デビュー日: 2005/06/03
投稿数: 11
投稿日時: 2005-09-05 17:57
こんにちは、いつもお世話になっております。

ASPXで別サーバにある共有フォルダ内のHTMLをINCLUDEしたいのですが以下のような現象で困っております。

環境:
<WEBサーバ(sv1とします)>
Windows 2003 Server + IIS6.0

<別サーバ(sv2とします)>
Windows 2003 Server

sv1とsv2は同じネットワーク内にあり同じID&パスワードでログインできます。
また、sv2の共有フォルダには共有、NTFSアクセス権ともにEveryOneにフルコントロールの権限が与えてあります。

sv1にあるASPXの内容:
************************************************************
<%@ Page language="c#" ValidateRequest="false"%>
<!-- #INCLUDE FILE="¥¥sv2¥share¥inc.html" -->

************************************************************

これで上記のsv1のASPXをたたくと、
「ログオン失敗: ユーザー名を認識できないか、またはパスワードが間違っています。」
といったエラーメッセージが出てしまい、インクルードできません。

sv1の仮想ディレクトリの認証方法の設定としては
デフォルトのまま「匿名アクセスを有効にする」と「統合Windows認証」にチェックが入っており
web.configには
<identity impersonate="true" />

<authentication mode="Windows" />
の設定がしてあります。

いろいろな方法を試したのですが結局うまくいきませんでした。
どなたか設定方法を知ってらっしゃいましたら教えて頂けませんでしょうか。
未記入
常連さん
会議室デビュー日: 2005/02/23
投稿数: 20
投稿日時: 2005-09-05 18:06
共有フォルダを見に行くのがWEBサーバのASPNETというローカルユーザーだからです。
別サーバの共有フォルダをWEBサーバのASPNETから見えるように権限の追加をする必要があります。
あさべー
会議室デビュー日: 2005/06/03
投稿数: 11
投稿日時: 2005-09-05 18:53
返信ありがとうございます。

引用:
共有フォルダを見に行くのがWEBサーバのASPNETというローカルユーザーだからです。
別サーバの共有フォルダをWEBサーバのASPNETから見えるように権限の追加をする必要があります。



そう思って、共有フォルダのセキュリティ設定で追加しようとしたのですが
自サーバ(共有フォルダのあるサーバ)のユーザおよびグループしか選択することができませんでした(場所の選択のところで自サーバしかでてこないのです)。
ですので、EveryOneフルコントロールにしてみたのですが
これはEveryOneをフルコントロールにしていてもだめなものなのでしょうか。
また、自サーバ以外のユーザに権限を割り当てるにはどのようにすればよろしいのでしょうか。

※2つのサーバは同じワークグループに属しております。

もしかしたら基本的なことを聞いてしまっているのかもしれませんが、どうぞ宜しくお願い致します。

todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-09-05 20:08
ASP.NETでSSIを使うのは、よくないそうです。
http://www.atmarkit.co.jp/fdotnet/aspmigrt/aspmigrt02/aspmigrt02_04.html

単にHTMLを流し込むだけなら、Page_Loadで HTMLファイルを読み込んで Literal コントロールに代入するとか。
あさべー
会議室デビュー日: 2005/06/03
投稿数: 11
投稿日時: 2005-09-05 23:39
todoさん、返信ありがとうございます。

引用:
ASP.NETでSSIを使うのは、よくないそうです。
http://www.atmarkit.co.jp/fdotnet/aspmigrt/aspmigrt02/aspmigrt02_04.html

単にHTMLを流し込むだけなら、Page_Loadで HTMLファイルを読み込んで Literal コントロールに代入するとか。



ある事情があって、ASPXのイベントや、サーバコントロールなどは使えないのです。
なので、パフォーマンスが悪くなってもINCLUDE(あるいはServer.Execute()メソッド)で行いたいと考えています。
変なこだわりで申し訳ございません。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-09-06 19:50
> ある事情があって、ASPXのイベントや、サーバコントロールなどは使えないのです。
 とっても興味があります。その「ある事情」というのを教えてください。

 また、ASP.NET 特有の機能を使えないのに、ASP.NET で行うのはなぜでしょう?言い換えれば、「Java を使わずに Struts を使え」と言われているようなものだと思うのです。とても矛盾していると思います。

 「お客からの要求」ではなく、どういう意図でお客が使うなと言っている、というレベルでお願いします。

_________________
あさべー
会議室デビュー日: 2005/06/03
投稿数: 11
投稿日時: 2005-09-06 23:02
jittaさん、返信有難うございます。

引用:
とっても興味があります。その「ある事情」というのを教えてください。

 また、ASP.NET 特有の機能を使えないのに、ASP.NET で行うのはなぜでしょう?言い換えれば、「Java を使わずに Struts を使え」と言われているようなものだと思うのです。とても矛盾していると思います。

 「お客からの要求」ではなく、どういう意図でお客が使うなと言っている、というレベルでお願いします。



「お客の要求」というわけではなく、自分たち側の判断によって使わないということです。
ただ、その理由の詳細に関しては大変申し訳ございませんがお答えできません。
決して意地悪とかではないので、そこはご理解頂きたいと思います。

ただ、ASPXで新たに実装された新機能としてすぐ思いつくのは
たしかにサーバコントロールだとは思いますが、
これを使わないからといってASPXを使う意味が無いとはいえないのではないでしょうか。
「Java を使わずに Struts を使え」というのは「C#を使わずにASPXを使え」というくらい極端に言い過ぎてしまっているのではないかと思います。

考え方としましては
見る側面によっては、ASPXの王道的手法とされている全ての機能が必ずしも優れているわけではないということです。

Jittaさん、きちんとお答えできず申し訳ないです。すみませんです。


本題に戻りますが、
本現象はWEBサーバ側が2003 Server ではなく、2000 Serverのときは出なかった現象です。同じような設定で普通に参照することができました。
2003 Server になって強化されたセキュリティの何かが原因だとは思うのですが
調べ切れていない状況です。

引き続き調査し解決しましたら、ご報告いたしますが、どなたか心当たりのある方いらっしゃいましたら、宜しくお願い致します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-09-07 22:30
 調査の方法ですが、ローカルセキュリティ設定で、ログオン失敗などを監査すると、イベントビューアに、誰が、どこから、どこへアクセスしようとした、というイベントがあがりませんか?


以下、道草

引用:

ただ、ASPXで新たに実装された新機能としてすぐ思いつくのは
たしかにサーバコントロールだとは思いますが、
これを使わないからといってASPXを使う意味が無いとはいえないのではないでしょうか。
「Java を使わずに Struts を使え」というのは「C#を使わずにASPXを使え」というくらい極端に言い過ぎてしまっているのではないかと思います。


 確かに。ASP.NET も Struts も、フレームワークであって言語ではありませんから、「フレームワークは使え。しかし、言語は使うな。」というのは、おかしいですね。

 たとえば、System.Web.UI.HtmlControls.HtmlAnchor コントロールは、<a>要素になるわけですが、これの派生元をたどれば System.Web.UI.Control クラス、すべての ASP.NET サーバー コントロールの親に行き着きますよ?つまり、すべての UI コントロールはサーバーコントロールである、と思います。

 サーバーコントロールを使わないということは、HttpRequest からポストされたデータを自力で読み取って、自力で HTML をレンダリングする必要があると思います。
 なぜ、用意されているフレームワークを使うと見せかけて、CGI バリのことをするのか、非常に興味があったのですが、明かせないなら仕方ないですね。

 本題とずれるところで申し訳ないですが、別件のように見えるところに、問題の本質があることもあります。今回の件は、それだと思いました。


 もう一つ別件で申し訳ないですが、、、
引用:

sv1とsv2は同じネットワーク内にあり同じID&パスワードでログインできます。
また、sv2の共有フォルダには共有、NTFSアクセス権ともにEveryOneにフルコントロールの権限が与えてあります。


危なくないですか?sv2 の共有フォルダは、ネットワーク上で丸見えなわけですよね?しかも、そのディレクトリを元にアプリケーションが動作するんですよね。それに対して、Everyone にフルコントロールって、危なくないですか?
 この問題が解決するまでの一時しのぎであれば、無視してください。

_________________

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