Не удалось загрузить файл или сборку «DocumentDB.Spatial.Sql» или одну из ее зависимостей

2

Я обновил все мои пакеты nuget до последних версий. Все работает отлично, будь то отладка или выпуск, но как только я опубликовал на azure, я получаю это на главной странице сайта:

[FileLoadException: Could not load file or assembly 'DocumentDB.Spatial.Sql' or one of its dependencies. Could not find or load a specific file. (Exception from HRESULT: 0x80131621)]
   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +457
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +110
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +22
   System.Reflection.Assembly.Load(String assemblyString) +34
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +48

[ConfigurationErrorsException: Could not load file or assembly 'DocumentDB.Spatial.Sql' or one of its dependencies. Could not find or load a specific file. (Exception from HRESULT: 0x80131621)]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +729
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +247
   System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +157
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +226
   System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +73
   System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +321
   System.Web.Compilation.BuildManager.ExecutePreAppStart() +170
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +878

[HttpException (0x80004005): Could not load file or assembly 'DocumentDB.Spatial.Sql' or one of its dependencies. Could not find or load a specific file. (Exception from HRESULT: 0x80131621)]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +525
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +124
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +700

Это установленные пакеты Nuget:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="jQuery" version="3.2.1" targetFramework="net452" />
  <package id="Microsoft.AspNet.SignalR" version="2.2.2" targetFramework="net452" />
  <package id="Microsoft.AspNet.SignalR.Core" version="2.2.2" targetFramework="net452" />
  <package id="Microsoft.AspNet.SignalR.JS" version="2.2.2" targetFramework="net452" />
  <package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.2.2" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.Azure.DocumentDB" version="1.18.0" targetFramework="net452" />
  <package id="Microsoft.Azure.DocumentDB.ChangeFeedProcessor" version="1.2.0" targetFramework="net452" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.8" targetFramework="net452" />
  <package id="Microsoft.Net.Compilers" version="2.4.0" targetFramework="net452" developmentDependency="true" />
  <package id="Microsoft.Owin" version="4.0.0-alpha1" targetFramework="net452" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="4.0.0-alpha1" targetFramework="net452" />
  <package id="Microsoft.Owin.Security" version="4.0.0-alpha1" targetFramework="net452" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net452" />
  <package id="Newtonsoft.Json" version="10.0.3" targetFramework="net452" />
  <package id="Owin" version="1.0" targetFramework="net452" />
</packages>

Публикация журнала сборки:

1>------ Publish started: Project: redacted, Configuration: Release Any CPU ------
1>Transformed Web.config using C:\Projects\redacted\redacted\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.
1>Auto ConnectionString Transformed obj\Release\TransformWebConfig\transformed\Web.config into obj\Release\CSAutoParameterize\transformed\Web.config.
1>Copying all files to temporary location below for package/publish:
1>obj\Release\Package\PackageTmp.
1>Start Web Deploy Publish the Application/package to https://redacted.scm.azurewebsites.net/msdeploy.axd?site=redacted ...
1>Adding ACLs for path (redacted)
1>Adding ACLs for path (redacted)
1>Updating file (redacted\bin\DocumentDB.Spatial.Sql.dll).
1>Updating file (redacted\bin\redacted.dll).
1>Updating file (redacted\bin\Microsoft.Azure.Documents.Client.dll).
1>Updating file (redacted\bin\Microsoft.Azure.Documents.ServiceInterop.dll).
1>Updating file (redacted\packages.config).
1>Updating file (redacted\Web.config).
1>Adding ACLs for path (redacted)
1>Adding ACLs for path (redacted)
1>Publish Succeeded.
1>Web App was published successfully http://redacted.azurewebsites.net/
========== Build: 0 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========

Вы можете увидеть, как целевая DLL добавляется в пакет в процессе сборки.

Я не могу получить это из этого состояния - это на dev-сервере, и теперь мои сторонние разработчики беспокоятся.

Я попробовал откат DocumentDB, что не помогло. Это произошло после того, как я неохотно решил обновить пакеты nuget.

Похоже, что файл DocumentDB.Spatial.Sql.dll даже не является сборкой.net. Почему он пытается загрузить его как таковой? Это просто родная 64-битная DLL.

Это изображение моего развернутого проекта на моем лазурном сайте: Изображение 174551

  • 0
    Есть ли у вас каталог SqlServerTypes внутри каталога bin?
  • 0
    @RamyMohamed - я добавил изображение списка FTP моего сайта. Этого каталога там нет.
Показать ещё 3 комментария
Теги:
azure
azure-web-sites

1 ответ

1
Лучший ответ

Так что, если у кого-то еще есть эта проблема или что-то подобное, это ошибка с инструментом публикации. Я решил разрешить это:

  1. Обновите все пакеты Nuget
  2. Завершить работу Visual Studio
  3. Удалите локальные project\bin и project\obj
  4. Откройте Visual Studio и перестройте пакет RELEASE.
  5. Перейдите в веб-приложение Azure и остановите приложение.
  6. Откройте FTP-клиент, подключитесь к своему сайту
  7. Удалите все файлы в каталоге /site/wwwroot/bin
  8. Вручную загрузите все файлы в каталоге project\bin каталог /site/wwwroot/bin
  9. Запустите веб-приложение Azure

Это заставило меня снова работать.

Я думаю, что некоторые из оставшихся пакетов Nuget вызывали конфликты. Это просто гарантирует, что после обновления пакетов Nuget ваш веб-сайт начнется с чистого листа.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню