【问题标题】:New Serenity deployment failing on Azure with Invalid object name 'Languages'Azure 上的新 Serenity 部署失败,对象名称“语言”无效
【发布时间】:2021-06-25 11:22:24
【问题描述】:

使用 Serenity 框架 v 5.0.24。 我有一个新的解决方案,其中包含一个小型演示,所有内容都可以在本地运行,但是当我尝试将其部署到 Azure 资源时,它似乎甚至无法创建数据库,但我不知道为什么。 “语言”是初始迁移单元中的第二件事,所以我假设它。 我之前在以前的版本上部署了几十个宁静应用程序,所以我不是新手。 这是原始异常输出:

Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid object name 'Languages'.
   at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
   at Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean isAsync, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String method)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
   at Serenity.Data.SqlHelper.ExecuteReader(IDbConnection connection, String commandText, IDictionary`2 param, ILogger logger)
   at Serenity.Data.SqlHelper.ExecuteReader(IDbConnection connection, SqlQuery query, ILogger logger)
   at Serenity.Data.EntitySqlHelper.ForEach(SqlQuery query, IDbConnection connection, Action callBack)
   at Serenity.Web.RowLookupScript`1.GetItems()
   at Serenity.Web.LookupScript.GetScript()
   at Serenity.Web.DynamicScriptManager.<>c__DisplayClass16_0.<EnsureScriptContent>g__factory|0()
   at Serenity.TwoLevelCacheExtensions.GetInternal[TItem](ITwoLevelCache cache, String cacheKey, TimeSpan localExpiration, TimeSpan remoteExpiration, String groupKey, Func`1 loader, Boolean localOnly)
   at Serenity.TwoLevelCacheExtensions.GetLocalStoreOnly[TItem](ITwoLevelCache cache, String cacheKey, TimeSpan localExpiration, String groupKey, Func`1 loader)
   at Serenity.Web.DynamicScriptManager.<>c__DisplayClass16_0.<EnsureScriptContent>g__getOrCreate|1()
   at Serenity.Web.DynamicScriptManager.EnsureScriptContent(String name, IDynamicScript script)
   at Serenity.Web.DynamicScriptManager.GetScriptText(String name)
   at AspNetCore.Views_Shared__LayoutHead.ExecuteAsync() in C:\Projects\research\distanceSignOff\distanceSignOff.Web\Views\Shared\_LayoutHead.cshtml:line 21
   at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
   at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts)
   at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
   at Microsoft.AspNetCore.Mvc.TagHelpers.PartialTagHelper.RenderPartialViewAsync(TextWriter writer, Object model, IView view)
   at Microsoft.AspNetCore.Mvc.TagHelpers.PartialTagHelper.ProcessAsync(TagHelperContext context, TagHelperOutput output)
   at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.<RunAsync>g__Awaited|0_0(Task task, TagHelperExecutionContext executionContext, Int32 i, Int32 count)
   at AspNetCore.Views_Shared__LayoutNoNavigation.<ExecuteAsync>b__9_0() in C:\Projects\research\distanceSignOff\distanceSignOff.Web\Views\Shared\_LayoutNoNavigation.cshtml:line 7
   at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.SetOutputContentAsync()
   at AspNetCore.Views_Shared__LayoutNoNavigation.ExecuteAsync() in C:\Projects\research\distanceSignOff\distanceSignOff.Web\Views\Shared\_LayoutNoNavigation.cshtml:line 5
   at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
   at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts)
   at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderLayoutAsync(ViewContext context, ViewBufferTextWriter bodyWriter)
   at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
   at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode)
   at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode)
   at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ActionContext actionContext, IView view, ViewDataDictionary viewData, ITempDataDictionary tempData, String contentType, Nullable`1 statusCode)
   at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.ExecuteAsync(ActionContext context, ViewResult result)
   at Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|29_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at StackExchange.Exceptional.ExceptionalMiddleware.Invoke(HttpContext context)
   at StackExchange.Exceptional.ExceptionalMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
ClientConnectionId:f3bf9b09-8ec0-45dd-b2e3-28445db434a9
Error Number:208,State:1,Class:16
ClientConnectionId before routing:6066e64d-1796-4b10-bf92-233e7990242a
Routing Destination:aed1b953e0aa.tr14046.eastus1-a.worker.database.windows.net,11009

【问题讨论】:

  • 数据库如何安装在服务器上?位置或凭据可能不正确。这是您第一次在 Window 10 机器上安装吗?您是第一次使用 Core 安装吗?这次与以往有什么不同?
  • 它已部署到 Azure 上的 WebApp 资源,这很好,因为它正在运行。该数据库也是 Azure 上的 SQLServer。我可以登录数据库。我无法确定与我之前执行此操作的时间有何不同。我已尝试删除所有资源并再次添加。如果凭据错误,我会收到一个特定错误告诉我。如果防火墙错误,我会收到有关它的特定错误。我只是从未见过在 Serenity 部署中发生这种情况,因为它们通常是无缝的。
  • 您有前端(客户端到服务器)和后端(服务器到数据库)。当您过去遇到错误时,它们是后端的前端吗?当您运行 SSMS 时,您是否在服务器上运行?当您过去遇到错误时,您是否在 VS 中运行。 VS 不会自动以管理员身份运行。您需要右键单击 VS 快捷方式并选择以管理员身份运行。这看起来像是一个凭证问题,不确定问题发生在前/后的哪个位置。
  • 感谢您的意见,但这都是 Azure 云中的东西,没有管理员或凭据问题。我现在已经用实际的分辨率回答了我自己的问题。
  • 我让你“跳出框框思考”。您只是查看错误并没有记住迁移安全检查。

标签: c# asp.net-mvc asp.net-core serenity-platform


【解决方案1】:

为了他人的利益,我发现了自己的问题。 我忽略了在第 203 行附近的 DataMigrations.cs 中删除了迁移安全检查,这部分会阻止您随意编写新数据库。 我记得(也许)过去应用程序会警告您已跳过迁移,而不仅仅是在未找到的第一个 SQL 对象上拉异常。 轻松搞定,就是觉得有点傻!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 2021-10-26
    相关资源
    最近更新 更多