Asp.net 部署到Azure时:System.Data.SqlClient.SqlException:在';在';

Asp.net 部署到Azure时:System.Data.SqlClient.SqlException:在';在';,asp.net,sql-server,azure,asp.net-mvc-5,azure-sql-database,Asp.net,Sql Server,Azure,Asp.net Mvc 5,Azure Sql Database,我有一个web应用程序,每当我将其部署到Azure时,它都会返回以下错误: System.Data.SqlClient.SqlException:“ON”附近的语法不正确 它告诉我错误来自my_Layout.cshtml中的第45行: @Html.Action("LoginPartial", "Home") 现在,在HomeController中,我有以下内容: [AllowAnonymous] [ChildActionOnly] public ActionResult

我有一个web应用程序,每当我将其部署到Azure时,它都会返回以下错误:

System.Data.SqlClient.SqlException:“ON”附近的语法不正确

它告诉我错误来自my_Layout.cshtml中的第45行:

@Html.Action("LoginPartial", "Home")
现在,在
HomeController
中,我有以下内容:

    [AllowAnonymous]
    [ChildActionOnly]
    public ActionResult LoginPartial()
    {
        var userId = User.Identity.GetUserId();
        var model = context.Users.Find(userId);

        // In case no such user is found and the model is called
        if (model == null)
        {
            model = new ApplicationUser()
            {
                FirstName = "N/A",
                LastName = "N/A"
            };
        }

        return PartialView("~/Views/Shared/_LoginPartial.cshtml", model);
    }
…每当我在本地调试应用程序时,它都可以正常工作-即使是远程连接的数据库(它们从Azure中的SQL Server运行)

我使用这段代码的目的是从共享视图(_LoginPartial.cshtml)显示登录用户的名字和姓氏,正如我所说,它在本地运行良好,但每次我将其发布到Azure时都会崩溃

如果注释掉LoginPartial()方法中的前两行,问题就会消失。但话说回来,这种方法的目的也是如此。。。因此,从数据库访问数据显然存在问题


有什么想法吗?

我终于明白了为什么它无法从Azure运行

在将解决方案与数据库一起部署时,我发现不支持用户实例,因此数据库没有成功部署

通过在SQL Server上手动创建数据库,然后从“发布Web”向导中选择它,而不是附加数据库文件,应用程序从Azure运行时不会出现问题


我还选择在发布Web向导中为每个数据库“执行代码优先迁移”。不知道这是否与此有关,但可能值得一提。

什么是
上下文
,什么是
.Users
,什么是
.Find()
?上下文是AspNetUsers表所在的数据库上下文(ApplicationDbContext),.Users用于访问数据库中的用户表,以及.Find()返回具有给定用户ID的ApplicationUser对象。所有这些都是微软的一部分。身份和我自己写的东西。我已经使用断点调试了此部分,当在本地运行时,它会按预期从数据库上下文检索ApplicationUser对象。您的数据库提供程序是什么(在entityFramework部分中配置的)?我不太确定entityFramework部分指的是什么,但是如果您正在谈论web.config文件,这就是它所说的:
并且在连接字符串中:
providerName=“System.Data.SqlClient”
但是,我仍然不理解为什么应用程序能够以调试模式在本地运行,而数据库仍然在同一个SQL Server上(而不是作为本地文件)。