【问题标题】:Configure ASP.NET MVC 4 Application with Oracle Database使用 Oracle 数据库配置 ASP.NET MVC 4 应用程序
【发布时间】:2013-07-28 17:36:34
【问题描述】:

我目前正在使用 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.

请注意,我已经在 usings 中添加了using System.Data.OleDb;

【问题讨论】:

    标签: c# asp.net-mvc-4 oracle11gr2


    【解决方案1】:

    恐怕Asp.Net SimpleMembership 和Asp.Net Membership 是不同的野兽。 Asp.Net MVC4 模板使用 SimpleMembership (WebSecurity.Login)。

    请参阅我在 Asp.Net MVC4 here 中关于 MySql Membership 提供程序使用的回答。简单地更改连接字符串或其他东西对您没有帮助。您需要找到一个 Oracle Asp.Net SimpleMembership 或自己编写。

    【讨论】:

      【解决方案2】:

      您可以在 web.config 中设置您使用的会员提供程序,而不是创建特殊类。

      对于 Oracle,存在一个 OracleMembershipProvider 类,您可以找到 here。 对于 MySQL,您可以使用 MySQLMembershipProvider。有一篇很好的文章如何设置它:How to Setup and Configure MySql Membership Provider

      此外,您可以使用 Entity Framework Code First Membership Provider 并使用适当的提供程序(查看这篇文章:Entity Framework Code-First support for Oracle, MySQL, PostgreSQL and SQLite)。我没有尝试这个解决方案,但它看起来很有希望。

      如果以上没有任何帮助,您可以编写自己的会员资格提供程序,但我相信您可以找到已经存在的东西。

      总结一下:不要更改连接类型,而是更改特定于您需求的成员资格提供商。您的代码不应该注意到更改,因为每个成员资格提供程序都继承了基类 MemebershipProivder

      【讨论】:

      • 我不明白。我必须更改连接字符串吗?
      • 顺便说一下,我安装了 CodeFirst Membership Provider。
      • @garath 你能解释一下如何设置 Oracle MemberShip 提供者吗?在这里查看我的答案:stackoverflow.com/questions/23094959/…
      猜你喜欢
      • 1970-01-01
      • 2019-09-20
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      相关资源
      最近更新 更多