#asp.net-core #azure-web-app-service #.net-4.6 #.net-4.6.1
#asp.net-core #azure-web-app-service #.net-4.6 #.net-4.6.1
Вопрос:
Может ли ASP.NET Основной проект нацелен на net461 и запущен на веб-сайте Azure?
Вот что было опробовано и не удалось.
Это работает при таргетинге netcoreapp1.0
, но когда я меняю его на net461
(включая некоторые другие необходимые изменения для компиляции) Я получаю следующую ошибку:
Unhandled Exception: System.TypeInitializationException: The type initializer for 'Microsoft.Extensions.PlatformAbstractions.PlatformServices' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
at Microsoft.Extensions.PlatformAbstractions.ApplicationEnvironment.GetApplicationBasePath()
at Microsoft.Extensions.PlatformAbstractions.ApplicationEnvironment..ctor()
at Microsoft.Extensions.PlatformAbstractions.PlatformServices..ctor()
at Microsoft.Extensions.PlatformAbstractions.PlatformServices..cctor()
--- End of inner exception stack trace ---
at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildHostingServices()
at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
at WebApplication1.Program.Main(String[] args) in C:UsersaWebApplication1Program.cs:line 14
В частности
System.IO.FileNotFoundException: не удалось загрузить файл или сборку ‘System.AppContext, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a’ или одна из его зависимостей. Системе не удается найти указанный файл.
Локально это работает нормально.
Я наивно добавил пакеты nuget для включения необходимых сборок.
{
"dependencies": {
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Newtonsoft.Json": "9.0.1",
"System.AppContext": "4.1.0",
"System.Reflection.TypeExtensions": "4.1.0",
"System.Security.Cryptography.X509Certificates": "4.1.0"
},
В итоге я получил ошибки другого типа:
warn: Microsoft.AspNetCore.Server.Kestrel[0]
Unable to bind to http://localhost:7762 on the IPv6 loopback interface.
System.AggregateException: One or more errors occurred. ---> Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvException: Error -4089 EAFNOSUPPORT address family not supported
at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.Check(Int32 statusCode)
at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.tcp_bind(UvTcpHandle handle, SockAddramp; addr, Int32 flags)
at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvTcpHandle.Bind(ServerAddress address)
at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.TcpListener.CreateListenSocket()
at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Listener.<>c.<StartAsync>b__6_0(Object state)
--- End of inner exception stack trace ---
Я не уверен, куда идти дальше.
Ответ №1:
Хотя в профиле публикации был установлен флажок «удалить дополнительные файлы в пункте назначения», должно быть, еще остались какие-то файлы.
Использование FTP и удаление всех файлов вручную перед публикацией решило проблему с проектом.
ASP.NET Базовый таргетинг net461 работает в Azure при условии, что вы ранее не публиковали там никаких других фреймворков.
Эти пакеты NuGet, которые я добавил в вопросе, также не понадобились и могут быть безопасно удалены из проекта.
"System.AppContext": "4.1.0",
"System.Reflection.TypeExtensions": "4.1.0",
"System.Security.Cryptography.X509Certificates": "4.1.0"
Комментарии:
1. Кроме того, вы также можете использовать консоль Kudu , которая более удобна, чем FTP, для просмотра / управления вашими файлами.