具有Code First连接字符串的实体框架到远程数据库

Ler*_*ica 5 vpn connection-string entity-framework-5

我正在使用本地机器(ASP.NET MVC 4应用程序),但现在我想开始使用公司的SQL服务器,所以我需要更改连接字符串以便将我连接到该远程服务器.

设置如下:

  • 我有一个VPN连接,我使用的是IP地址,无法显示确切的IP,所以让我们说 - xxx.xxx.xxx.xxx
  • 我有用户名和密码才能连接到VPN - VPNUsername/VPNPassword
  • 当我Microsoft SQL Server Management Studio用来连接到远程服务器时,我使用与用于连接VPN的相同IP - xxx.xxx.xxx.xxx
  • 我有不同的SQL Server用户名和密码 - SQLUsername/SQLPassword

我有一个现有的连接字符串,我用它连接到我的电脑上的服务器,所以我认为只需改变那里的参数即可:

<add name="ProjectName.DAL.MyDbContext"
     providerName="System.Data.SqlClient"
     connectionString="Data Source=xxx.xxx.xxx.xxx;
     Initial Catalog=DatabaseName;Integrated Security=True;         
     MultipleActiveResultSets=True;
     user id=SQLUsername;password=SQLPassword;App=EntityFramework" />
Run Code Online (Sandbox Code Playgroud)

因此,工作连接字符串并将我连接到本地服务器的更改有两个:

  1. Data Source= xxx.xxx.xxx.xxx - 我正在使用IP.在这里,我想知道IP本身是否足够.我应该使用http://xxx.xxx.xxx.xxx还是IP就可以了?
  2. user id=SQLUsername;pasword=SQLPassword- 我使用相同的用户名和密码Management studio,因为我可以通过提供xxx.xxx.xxx.xxx服务器名称和使用SQLUsername/SQLPassword 成功连接到删除服务器SQL Server Authentincation.

所以要清楚 - 在Management Studio下我连接到远程服务器没有问题.但是,当我将连接字符串更改为我在上面发布的内容时,我的HomeController逻辑非常简单,只是为了检查是否执行了对数据库的调用:

private MyDbContext db = new MyDbContext();

        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View(db.Users.ToList());
        }
Run Code Online (Sandbox Code Playgroud)

我有3个例外:

  1. SqlException(0x80131904):用户'VPNUsername'登录失败
  2. ProviderIncompatibleException:提供程序未返回ProviderManifestToken字符串.
  3. ProviderIncompatibleException:从数据库获取提供程序信息时发生错误.这可能是由实体框架使用不正确的连接字符串引起的.

所以除了这个,在我看来,因为3号异常告诉我问题是在我使用连接字符串的方式,关注我也是Number 1例外,说登录失败但不是我的SQLUsername而是VPNUsername.正如我所说 - 我真的使用VPN连接并使用相同的IP - xxx.xxx.xxx.xxx连接到VPN和SQL Server(来自Management Studio).

知道如何解决这个问题吗?

Moh*_*oho 6

Integrated Security=True当您尝试连接SQL Server用户名/密码时,从连接字符串中删除