web-dev-qa-db-ja.com

OracleデータベースでASP.NET MVC 4アプリケーションを構成する

現在、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;_を使用に追加していることに注意してください。

14
Christian Mark

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

Oracleの場合、OracleMembershipProviderクラスが存在します。このクラスは here です。 MySQLの場合、MySQLMembershipProviderを使用できます。どのように設定するかについての素晴らしい記事があります: MySqlメンバーシッププロバイダーを設定および構成する方法

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

上記のいずれも役に立たない場合は、独自のMemebershipプロバイダーを作成できますが、すでに存在するものを見つけることができると思います。

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

8
Piotr Stapp

Asp.Net SimpleMembershipとAsp.Net Membershipは別の獣です、私は恐れています。 Asp.Net MVC4テンプレートは、SimpleMembership(WebSecurity.Login)を使用します。

MySqlメンバーシッププロバイダーの使用に関する私の回答をAsp.Net MVC4 here で参照してください。接続文字列などを変更するだけでは効果がありません。 Oracle Asp.Net SimpleMembershipを見つけるか、独自に作成する必要があります。

1
Atilla Ozgur