【问题标题】:Where is the database with indivitual accounts in a .NET Core 3.0 Web Application App Service located?.NET Core 3.0 Web 应用程序服务中具有个人帐户的数据库位于何处?
【发布时间】:2020-03-18 09:10:59
【问题描述】:

我正在使用 Microsoft Identity 开发一个 .NET Core Web 应用程序。我已将其作为应用服务部署到 Azure 门户。我需要看一下我在 Microsoft Identity 中注册的用户,可能会删除其中的一些或进行修改,但我不知道数据库在云中的位置。有人可以帮忙吗?

编辑:这是 ConfigureServices() 方法:

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlite(
                    Configuration.GetConnectionString("DefaultConnection")));

            services.AddDefaultIdentity<ApplicationUser>()
                .AddEntityFrameworkStores<ApplicationDbContext>();

            services.AddIdentityServer()
                .AddApiAuthorization<ApplicationUser, ApplicationDbContext>();

            services.AddAuthentication()
                .AddIdentityServerJwt();

            services.AddControllersWithViews();
            services.AddRazorPages();

            services.AddSignalR().AddAzureSignalR(Configuration["SignalRConnectionString"]);

            // In production, the React files will be served from this directory
            services.AddSpaStaticFiles(configuration =>
            {
                configuration.RootPath = "ClientApp/build";
            });

            // For scaffolding:
            services.AddMvc().AddControllersAsServices();

            var task = ConnectToEventHub();
            services.AddApplicationInsightsTelemetry();
        }

Edit2:我意识到我的问题是,不知何故,这些用户存储在一个数据库中,该数据库存储在一个名为 app.db 的文件中。该文件位于 Web 应用程序的根目录中。现在,这可以工作,但是为了让它在生产环境中更有用,我的老板要求我将此数据库移动到 Azure SQL 数据库 - 或者基本上是用于我的 Web 应用程序的最简单和最便宜的数据库(作为应用服务托管在 azure 中)。 Cosmos DB 过于昂贵,无法仅存储一张用户表。有人知道如何从 app.db 迁移到 Azure SQL 数据库之类的东西吗?

【问题讨论】:

  • 你能分享你在 Startup.cs 中的 ConfigureServices() 方法吗?
  • 您可以在 Azure 门户的应用服务配置部分检查连接字符串吗?数据库应该在那里

标签: asp.net-core .net-core azure-web-app-service asp.net-core-3.0 asp.net-core-identity


【解决方案1】:

与 Microsoft 身份相关的旧答案,而不是个人帐户

只需在 Azure 门户中查找 Azure Active Directory。您通常可以通过汉堡菜单访问它,或者只需在搜索框中输入 Azure Active Directory:

在 Azure Active Directory 窗格中,从“管理”部分的菜单中选择“用户”。有你的用户。

或者,您可以使用 Azure CLI 在 AAD 中查询用户。 最简单的方法是直接在 Azure 门户中使用 Cloud Shell,因为它已经针对 Azure 进行了身份验证:

另外,请确保 AAD 租户 ID 与您在应用设置中使用的相同。

您的应用服务可能部署到连接到不同 AAD 的 Azure 订阅。

例如,我可以在我的私人订阅中创建应用服务,但我想让我公司的员工登录 -> 我在我公司的 AAD 中注册我的应用程序。

【讨论】:

  • 谢谢,但这些用户只是我公司的人,而不是我在 Azure 云中开发期间为我的 Web 应用程序创建的用户。
  • 您能描述一下您是如何创建用户的吗?
  • 我使用 Microsoft Identity 脚手架创建了一个注册页面,我用它来创建用户。您需要更多信息吗?
  • 是的,因为据我所知,Microsoft Identity Scaffolding 不存在。 :) 您是否使用带有个人帐户身份验证的 Web 应用模板? Microsoft Identity 只是 AAD 的新名称。也许您将它与 ASP.NET Identity 混淆了,后者是另外一种更通用的东西。
  • “您是否使用了带有个人帐户身份验证的 Web 应用模板?”。我不是百分百确定。如何检查并继续解决此问题?
【解决方案2】:

首先,根据您的 Startup 类,您使用的是个人帐户(不是 Microsoft Identity,只是 Azure Active Directory v2 的另一个名称)。

services.AddDefaultIdentity<ApplicationUser>()
   .AddEntityFrameworkStores<ApplicationDbContext>();

个人账户意味着您使用自己的数据库来存储用户、密码、角色等。


当您将 Web 应用程序发布到 Azure 时,您的本地数据库不会上传到 Azure。

如果您使用 Visual Studio 发布,它会识别您的 Web 应用使用实体框架,并且它可以在发布期间在同一资源组中创建新的 Azure SQL 数据库。它将具有相同的结构,但是不会上传您的本地数据。

所以要回答您的问题,数据库在哪里 - 就是您在发布期间或其他方式创建它的位置。

在 Azure 门户的汉堡菜单中选择 SQL 数据库,看看是否可以在那里找到数据库

如果没有,请检查您的连接字符串,您通常可以在应用服务的配置部分找到该字符串:

连接字符串将告诉您 SQL Server 的名称和数据库的名称,但不会告诉您 Azure 订阅或资源组。理论上它可以在任何地方。

【讨论】:

  • 再次感谢您。但是我可以在“SQL 数据库”下看到一个数据库,并且我之前在 Azure 门户中查看过该数据库,但我无法看到如何查看单个表,尤其是用户表。 ??
  • 那是完全不同的话题,只是谷歌“如何连接到 azure 数据库”你可以直接在 Azure 门户中使用Query Editor,或者你可以使用SQL Server Management StudioVisual Studio 连接到数据库
  • 谢谢。我这样做了,但如果我在 Azure 门户的查询编辑器中展开“表”树节点,似乎没有表。您知道在某处查看所有表格的方法吗?像“从表中选择 *”之类的东西?抱歉给您带来的麻烦,感谢您的帮助!
  • 然后看起来没有表,您需要运行实体框架迁移或migrate your local database to azure。 Google 如何使用 SQL 选择所有表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2016-10-06
  • 1970-01-01
  • 2018-07-13
  • 2020-05-16
  • 2020-01-31
相关资源
最近更新 更多