ASP.NETのフォーム認証でエラーが発生した場合の解決方法

このQ&Aのポイント
  • ASP.NETのフォーム認証を使用している際にエラーが発生した場合、以下の対処方法を試してみることができます。
  • エラーメッセージによれば、アプリケーションレベルを超えてセクションを使うことができないということです。このエラーが発生する一因として、仮想ディレクトリがIISでアプリケーションとして構成されていない可能性があります。
  • 解決方法としては、IISで該当のディレクトリをアプリケーションとして構成することが挙げられます。具体的な手順としては、IISマネージャーを開き、該当の仮想ディレクトリを選択し、右クリックして「アプリケーションとして構成」を選択します。そうすることで、仮想ディレクトリがアプリケーションとして扱われ、フォーム認証が正常に動作するようになります。
回答を見る
  • ベストアンサー

ASP.NET フォーム認証のエラー??

いつもお世話になっております。 VS2005にてアプリケーションを作成して 「WEBサイトの発行」でWEBサーバー上にアプリケーションを発行しました。 そのアプリケーションをサーバー上で実行した所、以下のエラーが出ました。 -------------------------------------------------------- 構成にエラーがあります。 パーサーエラーメッセージ:アプリケーションレベルを超えて allowDefinition='MachineToApplication'として登録されているセクションを使うことはできません。このエラーは、仮想ディレクトリがIISでアプリケーションとして構成されなかった場合に発生します。 ソースエラー: 行24:             を有効にします。 行25:--> 行26:   <authentication mode="Forms"> 行27:    <forms name="formauth" loginurl="Login.aspx" 行28: <protection="All" path="/" timeout="30"> --------------------------------------------------------- サーバーはWindows2000です。 Loginフォームがあり、フォーム認証のLoginページのみ上記のエラーが出て、他のaspxは普通に表示されます。 フォーム認証に問題があるのでしょうか? どうすれば解決できるのでしょうか?? 勉強して間もなく理解ができなく恐縮ですがご教示下さい。 お願い致します!

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

もしかして 単純ミスなのかも 28行目の行頭の『<』がいらないのでは ・・・

earlgyreprince
質問者

お礼

会社の同僚が私のIDでこちらに投稿していた様です。 本日分りました。 すみません。 MSDNと投稿がダブってしまうのでこちらは締め切ります。 よろしくお願い致します。

earlgyreprince
質問者

補足

redfox63さま ありがとうございます。 確認しましたが、上記のエラー内容は記述間違いです。 コピペではなく自身でエラーを打ったので間違えてしまいました。。。 28行目に<はありませんでした。 すみません。 他に思い当たる事ございますでしょうか?

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

認証をする場合 拒否するユーザーを設定しないといけません Web.Configの構成要素authorizationで設定を行います <authorization>   <deny users="?" /> </authorization> と言った具合だと 匿名ユーザーが拒否されます users = "*" とすると全てのアカウントに認証を要求します 開発を行っているアカウントはどのようなグループに所属していますか アップした先ってWin2000サーバーですか?

参考URL:
http://oshiete1.goo.ne.jp/qa3511055.html?q=3511055
earlgyreprince
質問者

補足

redfox63さま いつもありがとうございます☆ グループは<deny users="?" />となっておりました。 users = "*" にしましたが、エラーは解消されません。。。 再起動などが必要でしょうか?? >アップした先ってWin2000サーバーですか? はい。そうです。 宜しくおねがいします。

関連するQ&A

  • フォーム認証について

    ASP.NETにてフォーム認証を行おうとしています。 資料を参考にサンプルを実行しようとしているのですが、さわりの段階で早くも行き詰りました。 web.configに <authentication mode="Forms"> <forms name="formauthsample" loginUrl="Login.aspx" protection="All" timeout="30" path="/"> </forms> </authentication> と記述し、Login.aspx以外にもページを用意して、それらのページにダイレクトにアクセスした際にLogin.aspxにリダイレクトされるというのをテストしたかったんですが、リダイレクトされずにページが表示されてしまうのです。 web.configは上記設定だけでは足りないのでしょうか? または、根本的に勘違いをしていますでしょうか? アドバイスを宜しくお願いします。

  • C#の認証設定

    ROOTのしたのWeb.configに <authentication mode="Forms"> <forms name="AA" loginUrl="AA.aspx" ... </forms> </authentication> という設定をしました。そして、全部のURLは認証必要となります。 でもひとつサブディレクトリを認証除外したいです。 どう設定したらいいですか? ---- 下記のURLと同じ質問ですか、回答が理解できません。 http://dobon.net/vb/bbs/log3-33/20517.html

  • asp.netでのWEBの設定。

    ローカルでWEBサイトを見ようと思っても下記のエラーが出て、 進みません。誰かお願いです。教えてください。この問題で丸2日間止まっています。 環境は、VISTAのIIS7です。 '/' アプリケーションでサーバー エラーが発生しました。 -------------------------------------------------------------------------------- パーサー エラー 説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。以下の解析エラーの詳細を確認し、ソースファイルに変更を加えてください。 パーサー エラー メッセージ: アセンブリ 'App_Web_default.aspx.cdcab7d2' を読み込めませんでした。ページにアクセスする前にアセンブリがコンパイルされているかどうか確認してください。 ソース エラー: 行 1: <%@ page language="C#" autoeventwireup="true" inherits="_Default, App_Web_default.aspx.cdcab7d2" %> 行 2: 行 3: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ソース ファイル: /kyaba/Default.aspx 行: 1 -------------------------------------------------------------------------------- バージョン情報: Microsoft .NET Framework バージョン:2.0.50727.3074; ASP.NET バージョン:2.0.50727.3601 当然 http://210.132.71.10/qa3658634.html といった、同じ質問だったのですが、 どうも.netFrameworkバージョンとは関係なさそうです。(色々操作した結果そう思うのですが・・・) web.configは下記のとおりです。 <?xml version="1.0"?> <!-- メモ: このファイルを手動で編集する代わりに、Web 管理ツールを使用 してアプリケーションの設定を構成することができます。Visual Studio の [Web サイト] メニューにある [ASP.NET 構成] オプションから設定 を行ってください。設定およびコマンドの一覧は、通常 \Windows\Microsoft.Net\Framework\v2.x\Config にある machine.config.comments で確認できます。 --> <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> <appSettings/> <connectionStrings/> <system.web> <!-- デバッグ シンボルをコンパイルされたページに挿入するに は、compilation debug="true" に設定します。この設 定はパフォーマンスに影響するため、開発時のみこの値 を true に設定してください。 --> <compilation debug="true"/> <!-- <authentication> セクションは、ユーザーを識別するため に、ASP.NET で使用されるセキュリティ認証モードの構成 を有効にします。 --> <!--<authentication mode="Windows"/>--> <!-- <customErrors> セクションは、要求の実行中にハンドル されていないエラーが発生した場合の処理方法の構成を 有効にします。具体的には、開発者が HTML エラー ペ ージをスタック トレースのエラーの代わりに表示するように構 成することを可能にします。 <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> --> </system.web> </configuration>

  • web.configでフォーム認証できないのですが?

    (すいません、初心者です) web.configでフォーム認証をしたいのですが、 認証をしたいフォルダの.aspxファイルにしか認証が効かないのですが、同じフォルダ内の .cgi や .html にアクセスしようとしてもアクセス制限をかけるようにするには、どのようにすればいいのでしょうか?教えてください。 ちなみに使っているサーバーはiSLEのIIS共用サーバー http://windows.isle.jp/iis/index.html?id=isle_iis をレンタルしてます

  • ASP2.0からSQLserver2000への認証

    開発環境:VisualStudio.net2005 ASP.net DB:SQLServer2000 ログインコントロールで下記のコードを作成したところ 開発環境ではうまくいっているのですが、Webサーバーにリリースしたところうまくいきません。 ------------------------------------------------------------------------------------------------------------- Protected Sub Login1_LoggingIn(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LoginCancelEventArgs) Handles Login1.LoggingIn ' 入力されたユーザーID、パスワードでusrテーブル内のレコードを検索 Dim objDb As New SqlConnection("Data Source=dbserver;Initial Catalog=testdb;Persist Security Info=True;User ID=testusr;PassWord=hogehoge") Dim objCom As New SqlCommand("SELECT * FROM member WHERE LoginID=@LoginID AND LoginPass=@LoginPass", objDb) objCom.Parameters.Add("@LoginID", Login1.UserName) objCom.Parameters.Add("@LoginPass", Login1.Password) objDb.Open() Dim objDr As SqlDataReader = objCom.ExecuteReader() If objDr.Read() Then ' 検索の結果、該当するレコードが存在した場合、認証は成功 FormsAuthentication.RedirectFromLoginPage(Login1.UserName, False) End If objDb.Close() End Sub ---------------------------------------------------------------------------------------------------------------- DB内のデータはとれている(objDrの中身が入ってることをデバック実行にて確認) ので、認証の部分で失敗しているのかと思い http://www.microsoft.com/japan/msdn/enterprise/pag/securityguidance/paght000010.aspx 等を参考してみたのですが、 「サーバーへの接続を確立しているときにエラーが発生しました。SQL Server 2005 に接続しているときときにこのエラーが発生した場合は、SQL Server の既定の設定がリモート接続を許可しないようになっていることがエラーの原因である可能性があります。 (provider: SQL ネットワーク インターフェイス, error: 26 - 指定されたサーバーまたはインスタンスの位置を特定しているときにエラーが発生しました) 」 というメッセージが出力されて、認証ができません。 どなたかアドバイス等ありましたらご教授できませんでしょうか。

  • ASP.NET 2.0にてアプリが動作しない。

    WindowsServer2003にIIS6.0とASP.NET 2.0をインストールし、 VB.NET 2005のアプリを動かそうとしていますが、以下のメッセージが 出て動作しません。 Web.Configファイルの行0がおかしいと言われても、その意味が わかりません。誰か助けていただけないでしょうか。 '/MyApp' アプリケーションでサーバー エラーが発生しました。 -------------------------------------------------------------------------------- 構成にエラーがあります。 説明: この要求を処理するために必要な構成ファイルの処理中にエラーが発生しました。以下のエラーの詳細を確認し、構成ファイルに変更を加えてください。 パーサー エラー メッセージ: 構成ファイルの読み込み中にエラーが発生しました。: アクセスが拒否されたため、'E:\inetpub\wwwroot\web.config' への変更の監視を開始できませんでした。 ソース エラー: [関連したソースの行はありません] ソース ファイル: E:\inetpub\wwwroot\web.config 行: 0 -------------------------------------------------------------------------------- バージョン情報: Microsoft .NET Framework バージョン:2.0.50727.3603; ASP.NET バージョン:2.0.50727.3082

  • web.configファイルの動作確認

    web.configで、ログイン認証を行おうと思い。 アプリケーションルートに「web.config」ファイルを作り置きましたが、 配置前と後では、さっぱり動作が変わりません。 web.configファイルが読み込まれて、 動作しているか確認する方法を知りたいのですが、 ご存じないでしょうか?よろしくお願いします。 使用OSは、Windows2000です。 以下は、web.configファイルに追記した部分です。 <authentication mode="Forms"> <forms loginUrl="login.asp" /> </authentication> <authorization> <allow users="*" /> </authorization>

  • ASP.net 4.0 のコードビハインド

    ASP.net 1.1以来、久しぶりにASP.net 4.0を触っています。 新規作成→プロジェクト→ASP.net Web アプリケーションとクリックしてできる雛形のプロジェクトでは、Login.aspxのログインボタンをクリック→『SQLサーバーをみにいく』という動作になっています。 この『SQLサーバーをみにいく』イベントに対応するコードはどこに記載されてるのでしょうか?? 1.1のときはLogin.aspx.csに protected void LoginButton_Click(object sender, EventArgs e) {    『SQLサーバーをみにいく』 } だったように記憶しています。 ところが上記雛形プロジェクトではLogin.aspx.csにはなにも記載されていないです?! ご存知のかたおられましたらよろしくお願い申し上げます。

  • ASP.NETでのランタイムエラー?について

    .NETで開発したWEBアプリをサーバに置いてクライアントで 確認しようとすると、以下のエラーが表示されました。 表示内容に従ってWeb.Configファイルを変更したつもり なのですが、表示内容が変更されません。 解決方法をご存知の方、御回答願います。 ランタイム エラー 説明 : サーバーでアプリケーション エラーが発生しました。このアプリケーションの現在のカスタム エラー設定では、セキュリティ上の理由により、アプリケーション エラーの詳細をリモート表示できません。 ただし、ローカル サーバー コンピュータで実行されているブラウザで表示することはできます。 詳細: このエラー メッセージの詳細をリモート コンピュータで表示できるようにするには、現在の Web アプリケーションのルート ディレクトリにある "web.config" 構成ファイル内に、<customErrors> タグを作成してください。その後で、この <customErrors> タグで "mode" 属性を "off" に設定してください。 <!-- Web.Config 構成ファイル --> <configuration> <system.web> <customErrors mode="Off"/> </system.web> </configuration> メモ: 現在表示されているエラー ページをカスタム エラー ページ に変更するには、アプリケーションの <customErrors> 構成タグの "defaultRedirect" 属性をカスタム エラー ページ URL に置き換えます。 <!-- Web.Config 構成ファイル --> <configuration> <system.web> <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/> </system.web> </configuration>

  • 認証に失敗する

    Webアプリケーション作成中に以下のような状態になってしまいました 認証ページでユーザIDとパスワードを入力(正確)→エラーページ 「Webアプリケーション構築1」(株式会社SCC)のP266~275を参考に以下のようにTomcat 4.1\conf\server.xmlを書き換えました。 198~203行目(<!-- -->は外して) 186~187行目はコメント化 <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" driverName="org.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/[使用データベース名]" connectionName="manager1" connectionPassword="manager1" userTable="user" userNameCol="userid" userCredCol="password" userRoleTable="user_role" roleNameCol="role" /> またWebアプリケーションのweb.xmlは次のようになっています ~省略(ここまでの表記では正常に動きます)~ <security-constraint> <web-resource-collection> <web-resource-name>Certification Area</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/auth.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> 開発環境 Tomcat4.1 J2SDK1.4 MySQL4.0.26 Javaのプログラミングは入っていないのですが、関連はあると考えたのでこちらで質問しました。 上記のテキストを見直しても間違っている箇所が見当たりません。 大変長くなってしまいましたが、どこが間違っているか、足りていないかなど分かる方がいましたら教えてください。

専門家に質問してみよう