2009-07-27 13 views
2

ビジュアルスタジオでWebを実行している場合、次の行はtrueを返します。C#.NET - Membership.ValidateUserはWebでfalseを返します。ビジュアルスタジオでtrue

if (Membership.ValidateUser(Login1.UserName, Login1.Password)) 

ただし、Web経由で同じコードにアクセスすると、falseを返します。

同じデータベース、同じコンピュータ、同じWebフォルダですが、唯一の違いは、私がVisual Studioでデバッグを実行しているときに機能し、Web経由でアクセスしようとすると失敗する点です。

おかげ

+0

データベースを別のコンピュータに追加する必要があります。 – JCab

答えて

3

デバッグモードでは、ログインしているユーザーのセキュリティコンテキストになります。

ウェブ上でアクセスするときは、構成に応じて、同じユーザーまたはIIS匿名ユーザーのコンテキストまたはアプリケーションプールのIDである可能性があります。

Windows認証とimpersonate = trueを使用するようにIISとweb.configを構成する場合、同じ結果が得られます。

1

は、あなたのウェブサイトのワーカープロセスは、データベース(またはAD)に接続するためのアクセス権を持っていますか?おそらく、ワーカープロセスに使用される資格情報が接続できないため、ルックアップが失敗します。これは、統合認証を使用するように接続文字列を設定している場合によく発生します。 Cassiniまたは単体テストで実行すると、ログインしたユーザーの資格情報が使用され、多くの場合、ワーカープロセスよりも多くの権限が使用されます。

1

SQL Expressを使用している場合は、データベースが存在するフォルダにIISワーカープロセスユーザーが変更する権限があることを確認してください。 Windows XPでは、通常IIS_またはASPNETユーザーです。 Windows 2003以降では、これは通常はNETWORK SERVICEグループです。

関連する問題