14

現在、Oracle データベースを使用した ASP.NET MVC 4 プロジェクトに取り組んでいます。次のように、Web.config ファイルに接続文字列を正常に追加しました。

<add name="OracleDBConnString" connectionString="Provider=MSDAORA;Data Source=ISDQA;User ID=isd;Password=isdqa;" providerName="System.Data.OleDB" />

しかし、新しいプロジェクトを作成すると、組み込みの認証クラスが既に含まれています。これらのクラスを一度だけ変更するにはどうすればよいですか? デフォルトを変更したいConnString

これが私のモデルです:

public class UsersContext : DbContext
{
    public UsersContext()
        : base("OracleDBConnString")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
}

public class LoginModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

これが私のユーザーコントローラーです:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
    //I WANT TO MODIFY THIS PART
    if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)) 
    {

        return RedirectToLocal(returnUrl);
    }

    // If we got this far, something failed, redisplay form
    ModelState.AddModelError("", "The user name or password provided is incorrect.");
    return View(model);
}

アップデート

を に変更するbase("DefaultConnection")base("OracleDBConnString")、次のエラーが発生しました。

Server Error in '/' Application.

A null was returned after calling the 'get_ProviderFactory' method on a store provider instance of type 'System.Data.OleDb.OleDbConnection'. The store provider might not be functioning correctly.

私はすでに自分の使用法に追加using System.Data.OleDb;していることに注意してください。

4

2 に答える 2

8

特別なクラスを作成する代わりに、使用するメンバーシップ プロバイダーを web.config で設定できます。

Oracle には、ここでOracleMembershipProvider見つけることができるクラスが存在します。MySQL の場合は、 を使用できます。どのようにセットアップできるかという素晴らしい記事があります: How to Setup and Configure MySql Membership ProviderMySQLMembershipProvider

さらに、Entity Framework Code First メンバーシップ プロバイダー を使用して、適切なプロバイダーを使用することもできます (この記事を参照してください: Entity Framework Code-First support for Oracle, MySQL, PostgreSQL and SQLite )。このソリューションは試していませんが、有望に見えます。

上記のことが役に立たない場合は、独自のメンバーシップ プロバイダーを作成できますが、既に存在するものを見つけることができると確信しています。

要約すると、接続タイプを変更する代わりに、ニーズに固有のメンバーシップ プロバイダーを変更します。MemebershipProivderすべてのメンバーシップ プロバイダーは基本クラスを継承するため、コードは変更に気付かないはずです。

于 2013-07-31T07:46:55.277 に答える