Azure ConnectionString使用完全错误的登录凭据

时间:2017-01-11 21:57:35

标签: asp.net-mvc azure connection-string azure-sql-database

我创建了一个访问数据库的ASP.NET MVC网站,这两个数据库都托管在azure中。我创建了一个特定的登录名和用户来访问数据库,并可以在SSMS中看到它们。我看到了网站的登录界面。问题是当我尝试登录时,登录失败告诉我无法找到用户。

这里开始变得奇怪了。无法找到的登录ID不是我创建的登录名,也不是我web.config(或我的app.config)中的登录名。相反,它是主用户,我必须访问数据库服务器和我的蔚蓝资源的其他区域。

以下是我的PC上用于发布到azure的web.config的部分:

<connectionStrings>
  <add name="CSSL" connectionString="Server=tcp:svrmysqlserver.database.windows.net,1433;Database=MyDatabase;User ID=sqlUser@svrmysqlserver;Password=q2wW£E;Encrypt=True;TrustServerCertificate=False;Connection Timeout=300;" providerName ="System.Data.SqlClient" />
</connectionStrings>

错误消息说

Login failed for user 'MasterUser'.

我添加了一些调试代码来获取可用的连接字符串并在服务器上使用并再次尝试。我得到了以下内容:

Login failed for user 'MasterUser'. 
ConfigurationManager[data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true] 
ConfigurationManager[] 
ConfigurationManager[Data Source=tcp:svrmysqlserver.database.windows.net,1433;Initial Catalog=MyDatabase;User ID=MasterUser@svrmysqlserver;Password=MasterPassword;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False] 
ConfigurationManager[Data Source=tcp:svrmysqlserver.database.windows.net,1433;Initial Catalog=MyDatabase;User ID=MasterUser@svrmysqlserver;Password=MasterPassword;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False] 
Database[Data Source=tcp:svrmysqlserver.database.windows.net,1433;Initial Catalog=MyDatabase;User ID=MasterUser@svrmysqlserver;Password=MasterPassword;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False] 

我附上了一个代码片段来回答下面的评论 - 我从哪里获得输出?我在处理程序中添加了代码,以便在返回之前获取连接字符串的当前值。该函数位于数据上下文中,是第一次尝试从数据库中读取数据。

    public ReturnInfo GetSystemRecord(out AppSystemRecord rec)
    {
        ReturnInfo ret = null;
        rec = new AppSystemRecord();

        //check that we have a hope of seeing this record - no records should have an ID of zero

        try
        {
            var query = from x in SystemRecord select x;        // ther should only ever be one
            if (query.Count() == 0)
            {
                SetupAdminUser();
                SystemRecord.Add(rec);
                SaveChanges();
            }
            else
                rec = query.FirstOrDefault();

            ret = new ReturnInfo();                 // defaults to all okay

            if (rec.Status == SystemStatus.Created || rec.Status == SystemStatus.Updated)
                SetupDefaultsForLookupTables();
            rec.Status = SystemStatus.Normal;
            SaveChanges();
        }
        catch (Exception e)
        {
            while (e.InnerException != null)
                e = e.InnerException;
            ret = new ReturnInfo(ErrorType.UnableToReadDomainObject, e.Message + "\r\n");
            // THIS IS THE IMPORTANT BIT TO GET THE CONNECTION DATA
            foreach (ConnectionStringSettings v in ConfigurationManager.ConnectionStrings)
            {
                ret.ErrorMessage += "ConfigurationManager[" + v.ConnectionString + "] " + "\r\n";
            }
            ret.ErrorMessage += "Database[" + Database.Connection.ConnectionString + "] " + "\r\n";
        }
        return ret;
    }

我在任何文件中搜索了我的解决方案以获取MasterUser的任何用途,但没有找到任何用户,也没有找到任何密码的引用,这是正确的MasterUser密码。

我删除了网站和数据库,并再次开始确保云中没有文件,但没有任何乐趣。有什么想法发生了什么?有没有某种缓存我没有被无效?是否有一些规则,必须与主人有联系?

感谢您的帮助和想法。 克雷格

0 个答案:

没有答案