- - PR -
Webプロジェクト'hoge'を開けません。・・・・・・
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-06-03 12:32
VC#2003でASP.NET Webアプリケーションを開発しています。
ある要件を解決するために採用した方法に問題があるようで、困っております。 状況説明が長いですが、よろしくお願い致します。 要件 1.イントラネットからのアクセス時はトップページを表示 2.インターネットからのアクセス時はユーザ認証ページを表示 解決方法 1.[ASP.NET]構成ファイルのみでフォーム認証を実現するには? http://www.atmarkit.co.jp/fdotnet/dotnettips/135aspauth/aspauth.html を参考にして、トップページのファイル(index.htm)にアクセスがあったときに 認証ページへ飛ばす。 2.認証ページのPage_Loadイベントで、アクセスした端末のIPアドレスを調べて、 イントラネット内のアドレスだったら、IDとPassをあらかじめ入力させた状態で 認証させ、トップページへ飛ばす。 → 処理時間は一瞬なので、イントラネット内のユーザは認証画面を通過した とは思わないでしょう。 3.「2」で該当しないIPアドレス、つまりインターネットからの接続の場合は、 認証ページでIDとPassを入力させる。 Web.configファイルの該当記述は以下参照 <authorization> <allow users="ユーザID" /> <!--「ユーザID」ユーザーならアクセス許可--> <deny users="*" /> <!--↑の認証ユーザー以外はアクセス不許可--> </authorization> という方法で実現しました。 ただ、トップページにアクセスしたタイミングではなく、トップページからリンクが 張られた、hoge.aspxに対してアクセスがあったタイミングで認証ページが表示され ました。 トップページはフレームで3つに分割されているので、それぞれのフレームで 認証ページが表示されました。 これを解決するために、 [ASP.NET].htmlや.pdfファイルをフォーム認証やロギングの対象にするには? http://www.atmarkit.co.jp/fdotnet/dotnettips/114iisrelate/iisrelate.html を参考にして、トップページ(index.htm)をマッピングしましたが状況変わらず。 仕方ないので、フレーム分割されていないダミーページ(index.html)もマッピングして 「サイトのプロパティ」の「ドキュメント」タブの「既定のドキュメント」で、 トップページ(index.htm)よりもダミーページ(index.html)を優先して表示させるように したところ、認証ページは1つだけ表示されるようになりました。 ここまでやって何とかなったな、と思いましたが、次回 VC#.NET 起動時に、 Webプロジェクト'hoge'を開けません。ファイルパス'C:\\Inetpub\\wwwroot\\hoge'が URL'http://10.10.10.27/hoge'と一致しません。これらは同じサーバーの場所に 割り当てる必要があります。 とエラーになりました。 結局、Web.configの上記の該当記述を <authorization> <allow users="*" /> <!-- 全ユーザーへの許可 --> </authorization> にすると、このエラーは出ません。 開発時とリリース時で、Web.configの記述をいちいち書き換えるしかないのでしょうか。 または、この解決方法の中に、やってはいけない事柄が入っていますでしょうか。 よろしくお願い致します。 | ||||||||
|
投稿日時: 2004-06-03 12:52
Undoさん、こんにちは。
# 細かいところは見ていません。
configファイルを追加して、デバッグ時とリリース時で違うファイルを読み込むように出来ます。プロジェクトのプロパティダイアログで、構成毎にオーバーライドファイルを指定します。 | ||||||||
|
投稿日時: 2004-06-03 16:53
きくちゃん様
お返事ありがとうございます。 >プロジェクトのプロパティダイアログで、構成毎にオーバーライドファイルを指定します。 私にはプロパティダイアログには、オーバーライドファイルを指定する箇所を見つけられませんでした。 そこでデバッグ時用とリリース時用に2つの.configファイルを準備して、 以下のように、hoge.csproj内に~~~~~~~~線部のように記述しました。 <Config Name = "Debug" AllowUnsafeBlocks = "false" BaseAddress = "285212672" CheckForOverflowUnderflow = "false" ConfigurationOverrideFile = "debug.config" ~~~~~~~~~~ DefineConstants = "DEBUG;TRACE" DocumentationFile = "" DebugSymbols = "true" FileAlignment = "4096" IncrementalBuild = "false" NoStdLib = "false" NoWarn = "" Optimize = "false" OutputPath = "bin\" RegisterForComInterop = "false" RemoveIntegerChecks = "false" TreatWarningsAsErrors = "false" WarningLevel = "4" /> <Config Name = "Release" AllowUnsafeBlocks = "false" BaseAddress = "285212672" CheckForOverflowUnderflow = "false" ConfigurationOverrideFile = "release.config" ~~~~~~~~~~ DefineConstants = "TRACE" DocumentationFile = "" DebugSymbols = "false" FileAlignment = "4096" IncrementalBuild = "false" NoStdLib = "false" NoWarn = "" Optimize = "true" OutputPath = "bin\" RegisterForComInterop = "false" RemoveIntegerChecks = "false" TreatWarningsAsErrors = "false" WarningLevel = "4" /> このように設定しましたが、読み込まれていないようです。 読み込まれていないと判断した理由は、既存のWeb.configをリネームすると ビルドできないからです。 エラーメッセージ プロジェクトを実行しようとしているときにエラーが発生しました:Webサーバーで デバッグを開始できません。プロジェクトはデバッグできるように設定されていません。 設定箇所は、ConfigurationOverrideFile ではないのでしょうか? 以上、よろしくお願い致します。 | ||||||||
|
投稿日時: 2004-06-03 17:25
本題からずれますが、これはやや危険な気がしないでもないです。 | ||||||||
|
投稿日時: 2004-06-03 17:42
Undoさん、こんにちは。
済みません、VB.NETの話でした。申し訳ない。
はい、それで合ってます。 デバッグ用の方のファイル名を、標準の Web.config にしてみて下さい。 | ||||||||
|
投稿日時: 2004-06-04 09:28
なちゃ様、お返事ありがとうございます。
危険ですか・・・・。 「送信元IPアドレスを偽装した場合に、認証を通過してしまう」 という意味でしょうか。 申し忘れておりましたが、このサイトにインターネット網から接続できる外部端末は 限られておりまして、そこのプロキシサーバのIPアドレスでアクセス制限をかけて いますので、完全に解放しているわけではないのです。 他の危険性でしょうか? オーバーヘッドが大きくなるとか・・・? 接続する人数も最大で200人程度です。 気付いていない危険性があるかもしれませんので、是非教えていただけないでしょうか。 よろしくお願い致します。 | ||||||||
|
投稿日時: 2004-06-04 09:48
あぁ、すみません、この辺のことを考慮されたうえでならいいと思います。 その辺のことがちょっと気になっただけでした。m(_ _)m | ||||||||
|
投稿日時: 2004-06-04 10:17
きくちゃん様
お返事ありがとうございます。
↑の方法でやりました。 ビルドはできるようになりました。 ただ、リリース時もデバッグ時に指定している"Web.config"ファイルを 読んでしまうようです。 試しに、"hoge.csproj"ファイル内で、 <Config Name = "Release" AllowUnsafeBlocks = "false" BaseAddress = "285212672" CheckForOverflowUnderflow = "false" ConfigurationOverrideFile = "release.config" ~~~~~~~~~ "Web.config"ファイル内(デバッグ時に指定している.configファイル)で <authorization> <deny users="*" /> </authorization> と書いて"Release"でビルドすると、誰もアクセスできません。 つまり"release.config"ファイルではなく、"Web.config"ファイルを 読み込んでいると考えられます。 ConfigurationOverrideFile で設定した.configファイルを読み込むために 別のフラグがあるのでしょうか? |