web-dev-qa-db-fra.com

Configurer l'application ASP.NET MVC 4 avec la base de données Oracle

Je travaille actuellement sur le projet ASP.NET MVC 4 avec la base de données Oracle. J'ai ajouté avec succès la chaîne de connexion dans mon fichier Web.config comme ici:

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

Mais lorsque je crée un nouveau projet, il possède déjà des classes d'authentification intégrées. Comment puis-je modifier ces classes une fois pour toutes? Je veux changer la valeur par défaut ConnString.

Voici mon modèle:

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; }
}

Voici mon contrôleur d'utilisateur:

[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);
}

METTRE &AGRAVE; JOUR

Lorsque je remplace base("DefaultConnection") par base("OracleDBConnString"), le message d'erreur suivant s'affiche:

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.

Notez que j'ai déjà ajouté using System.Data.OleDb; sur mes utilisations.

14
Christian Mark

Au lieu de créer une classe spéciale, vous pouvez configurer dans web.config le fournisseur d'appartenance que vous utilisez.

Pour Oracle, il existe une classe OracleMembershipProvider, dans laquelle vous pouvez trouver here . Pour MySQL, vous pouvez utiliser MySQLMembershipProvider. Il existe un article intéressant sur la configuration: Comment configurer et configurer le fournisseur d’adhésion MySql

De plus, vous pouvez utiliser Entity Framework Code First Membership Fournisseur et utiliser le fournisseur approprié (consultez cet article: Entity Framework Code-First, prise en charge d'Oracle, MySQL, PostgreSQL et SQLite ). Je n'ai pas essayé cette solution, mais elle semble prometteuse.

Si rien de ce qui précède ne vous aide, vous pouvez écrire votre propre fournisseur Memebership, mais je suis sûr que vous pouvez trouver quelque chose qui existe déjà.

Pour résumer: au lieu de changer le type de connexion, changez le fournisseur d'appartenance qui sera spécifique à vos besoins. Votre code ne devrait pas remarquer de changement, car chaque fournisseur d'appartenance hérite de la classe MemebershipProivder de base.

8
Piotr Stapp

Asp.Net SimpleMembership et Asp.Net Membership sont des bêtes différentes, je le crains. Les modèles Asp.Net MVC4 utilisent SimpleMembership (WebSecurity.Login).

Voir ma réponse à propos de l'utilisation du fournisseur d'adhésion à MySql dans Asp.Net MVC4 ici . Changer simplement la chaîne de connexion ou d'autres choses ne vous aidera pas. Vous devez trouver un membre Oracle Asp.Net SimpleMembership ou écrire le vôtre.

1
Atilla Ozgur