1

私は最初の実際の MVC プロジェクトに取り組んでおり、私の仕事はカスタム メンバーシップ プロバイダーを実装することです。以前にasp.net 3.5 Webフォームに実装したことがあるので、可能であればそのコードの一部を再利用しようとしています。私たちのデータはリモート Web サービスから取得されるため、標準のメンバーシップ データベースは使用しません。Web フォームに関するいくつかの調査と経験に基づいて、クラスを作成しました。

public class wwdllMembershipProvider : MembershipProvider

私はweb.configに以下を入れました:

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
  <membership defaultProvider="wwdllMembershipProvider" userIsOnlineTimeWindow="15">
      <providers>
          <add name="wwdllMembershipProvider" type="wwdllMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" writeExceptionsToEventLog="false" enablePasswordChange="true" />
      </providers>
  </membership>

そこから、メンバーシップ プロバイダーのスタブ化されたコードのいずれかがヒットしていないかどうかを確認しようとしました。しかし、アプリのログイン リンクをクリックするとすぐに、次のエラーが表示されます。

SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - 指定されたサーバー/インスタンスの検索エラー) 説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.Data.SqlClient.SqlException: SQL Server への接続の確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - 指定されたサーバー/インスタンスの検索中にエラーが発生しました)

ソース エラー:

Line 55:                     using (var context = new UsersContext())
Line 56:                     {
Line 57:                         if (!context.Database.Exists())
Line 58:                         {
Line 59:                             // Create the SimpleMembership database without Entity Framework migration schema


Source File: c:\Users\mburt\Documents\Visual Studio 2012\Projects\eSales\4300\Siriusware.eSales\Filters\InitializeSimpleMembershipAttribute.cs    Line: 57

web.config 設定で無効になっているため、Simple Membership Provider コードが実行されるとは思わなかったので、これは私には不可解です。

誰かが私が間違っていることを指摘できますか? ありがとう!

4

1 に答える 1

2

デフォルトのアカウント コントローラーは、まさにその属性で装飾されています。それがまだ存在するかどうかを確認します。

(以下のデフォルトの MVC4 プロジェクト コード。)

namespace MvcApplication2.Controllers
{
    [Authorize]
    [InitializeSimpleMembership]
    public class AccountController : Controller
    {
        [...]
    }
}
于 2013-04-18T17:38:18.790 に答える