none
ログイン用データベースの設定方法

    質問

  • VWDのWebサイト管理ツールを使用して、
    Loginコントロールからユーザ名とパスワードを入力すると
    ログインできるページを作りたいのですが、
    開発環境では正常に動作するものの、
    [Webサイトのコピー]を使用して
    ローカルIIS上のリモートWebサイト上で動作させると、
    赤い文字で、「ログインに失敗しました。やり直してください。」と
    表示されます。

     

    既定では、ユーザ名とパスワードは、
    App_Data\ASPNETDB.MDF
    に保管されるため、IIS上にファイルをコピーする際には
    App_Dataフォルダのファイルもコピーしているのですが、
    IIS上のリモートWebサイトとして動作させた場合にのみ
    ログインに失敗しましたと表示されます。

     

    どのような設定を行えば、ログインできるようになるのか
    教えてください。

    なお、IISのバージョンはIIS6.0です。

    2008年4月22日 6:17

回答

  • ローカルのIISであればファイルのコピーだけでも動きそうですが。。。

    ただ、実際に運用するサーバ上にWebアプリを展開するときのことを考えると、データベースの管理についてきちんと勉強して、どのような運用を行うのがよいか検討されたほうがいいと思います。
    開発サーバ上でASPNET.MDFが動作するのは、ユーザインスタンスという機能を利用しているからですが、これはSQL Server 2005 Express Editionにしかない機能で、他のEditionではそのまま動作させることはできません。

    すくなくともweb.configファイルの書き換えが必要になります。

    そういったもろもろの知識をつけられることが先かなぁ、と。

    2008年4月22日 8:11
    モデレータ
  • > 5.1ではファイルのコピーだけで、ログインすることができたのに6.0ではログインできない点が疑問です。

     

    とりあえず動かす、ということを前提に考える場合であれば、まずSQL Serverは何(どんなエディション)がインストールされていますか?
    それと、コピーしたファイルASPNETDB.MDFとASPNETDB.LDFのアクセス権とかはASP.NETの実行ユーザが変更できるように設定されていますか?

    そのあたりがキーになると思います。

     

    > web.configファイルに次の行を追加してみましたが、「エントリLocalSqlServerは既に追加されています」のエラーとなりました

     

    LocalSqlServerの設定はマシンレベルのweb.configに記述されています。
    これを上書きする場合は、まずremoveする必要があります。
    また、ここに記述している内容について、特にAttacheDbFilenameやUser Instanceの意味をきちんと理解したうえで利用することが重要です。

     

    2008年4月23日 2:03
    モデレータ
  • とりあえず動いたようですが、これ、あくまで「とりあえず動いた」という状態だということを認識しておいたほうがいいです。

    データベースがどういう状態で動いているのか、きちんと学習されることをおすすめします。

     

    それとは別に、、、

     

    > それぞれのファイルのプロパティで、インターネットゲストアカウントと
    > Usersにフルコントロールを許可し、再起動すると
    > ログインできることが確認できました。

     

    Usersにフルコントロールを許可したから動いたのかなぁ。

    こちらも、私が書いた「ASP.NETの実行ユーザ」っていう言葉についてきちんと理解されたほうがよいと思います。

    2008年4月23日 6:08
    モデレータ

すべての返信

  • ローカルのIISであればファイルのコピーだけでも動きそうですが。。。

    ただ、実際に運用するサーバ上にWebアプリを展開するときのことを考えると、データベースの管理についてきちんと勉強して、どのような運用を行うのがよいか検討されたほうがいいと思います。
    開発サーバ上でASPNET.MDFが動作するのは、ユーザインスタンスという機能を利用しているからですが、これはSQL Server 2005 Express Editionにしかない機能で、他のEditionではそのまま動作させることはできません。

    すくなくともweb.configファイルの書き換えが必要になります。

    そういったもろもろの知識をつけられることが先かなぁ、と。

    2008年4月22日 8:11
    モデレータ
  • ありがとうございます。

    同じことを、IIS5.1とIIS6.0で実行してみたのですが、
    5.1ではファイルのコピーだけで、ログインすることができたのに
    6.0ではログインできない点が疑問です。

     

    ASPNETDB.MDFに対する接続文字列は、IISマネージャの
    [既定のWebサイト]のプロパティで、
    [ASP.NET]タブ→[構成の編集]→[認証]タブ→[プロバイダの管理]
    で示されているものと思いましたので、
    web.configファイルに次の行を追加してみましたが、
    「エントリLocalSqlServerは既に追加されています」のエラーとなりました。

     

      <connectionStrings>
        <add name="LocalSqlServer" connectionString="Data Source=.\SQLEXPRESS;
           AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;
           Integrated Security=True;User Instance=True"
         providerName="System.Data.SqlClient" />
      </connectionStrings>

     

    したがって、web.configファイルでの設定を行わなくても、
    すでに接続文字列の設定はなされているものと思いますが、
    それではどこを見直せばよいのかアドバイスをいただけませんか。

    2008年4月22日 9:11
  • > 5.1ではファイルのコピーだけで、ログインすることができたのに6.0ではログインできない点が疑問です。

     

    とりあえず動かす、ということを前提に考える場合であれば、まずSQL Serverは何(どんなエディション)がインストールされていますか?
    それと、コピーしたファイルASPNETDB.MDFとASPNETDB.LDFのアクセス権とかはASP.NETの実行ユーザが変更できるように設定されていますか?

    そのあたりがキーになると思います。

     

    > web.configファイルに次の行を追加してみましたが、「エントリLocalSqlServerは既に追加されています」のエラーとなりました

     

    LocalSqlServerの設定はマシンレベルのweb.configに記述されています。
    これを上書きする場合は、まずremoveする必要があります。
    また、ここに記述している内容について、特にAttacheDbFilenameやUser Instanceの意味をきちんと理解したうえで利用することが重要です。

     

    2008年4月23日 2:03
    モデレータ
  • 解決しました。ありがとうございました。

     

    SQL Serverは、VWDをインストールした際にインストールされる
    SQL Server 2005 Express Edition x86 を使用しています。

     

    App_Dataフォルダの下のASPNETDB.MDFとaspnetdb_log.ldfについて、
    アクセス権の設定をしていなかったことが原因でした。

     

    それぞれのファイルのプロパティで、インターネットゲストアカウントと
    Usersにフルコントロールを許可し、再起動すると
    ログインできることが確認できました。

     

    ただし一般的には、フルコントロールまで与えなくても良いと思います。

     

    なお、IIS5.1ではアクセス権の設定をしていなくても
    アクセスできるようです。

    2008年4月23日 4:28
  • とりあえず動いたようですが、これ、あくまで「とりあえず動いた」という状態だということを認識しておいたほうがいいです。

    データベースがどういう状態で動いているのか、きちんと学習されることをおすすめします。

     

    それとは別に、、、

     

    > それぞれのファイルのプロパティで、インターネットゲストアカウントと
    > Usersにフルコントロールを許可し、再起動すると
    > ログインできることが確認できました。

     

    Usersにフルコントロールを許可したから動いたのかなぁ。

    こちらも、私が書いた「ASP.NETの実行ユーザ」っていう言葉についてきちんと理解されたほうがよいと思います。

    2008年4月23日 6:08
    モデレータ
  • こんにちは、森田です。

     

    どっとねっとふぁんさん、大変有用な情報およびアドバイスをありがとうございます!

     

    whitenightさん、MSDNフォーラムのご利用ありがとうございます!

    どっとねっとふぁんさんの投稿は、有用なものだと思われましたので、

    勝手ながら回答済みチェックをつけさせて頂きました。

    whitenightさんは、チェックを解除することもできますのでご確認ください。

     

    回答済みチェックがつくことにより、他の利用者の方が情報を見つけやすくなります。

    有用な回答がありましたら、なるべく回答済みチェックをつけてくださりますようお願いします。

     

    それでは、これからもMSDNフォーラムのご利用よろしくお願いします。

    2008年5月12日 6:58