Я обновляю проект Asp.net Webapi до .net 4.7.2 из среды .net 4.6.2, а также изменяю существующий формат проекта на формат MsBuild 15.
На локальной машине разработчика он работает без проблем.
Мое приложение развернуто в веб-приложении Azure. При попытке получить доступ к моему webapi я получаю сообщение об ошибке.
не удалось запустить процесс с командной строкой 'dotnet. \ WebApplication6.dll', ErrorCode = '0x80004005'.
Я использую elmah в существующем проекте. Я также вижу проблему ConfigurationErrorsException.
Could not load file or assembly 'Elmah' or one of its dependencies. The system cannot find the file specified.
at System.Web.Configuration.ConfigUtil.GetType(String typeName, String propertyName, ConfigurationElement configElement, XmlNode node, Boolean checkAptcaBit, Boolean ignoreCase)
at System.Web.Configuration.ConfigUtil.GetType(String typeName, String propertyName, ConfigurationElement configElement, Boolean checkAptcaBit)
at System.Web.Configuration.Common.ModulesEntry.SecureGetType(String typeName, String propertyName, ConfigurationElement configElement)
at System.Web.Configuration.Common.ModulesEntry..ctor(String name, String typeName, String propertyName, ConfigurationElement configElement)
at System.Web.HttpApplication.BuildIntegratedModuleCollection(List`1 moduleList)
at System.Web.HttpApplication.GetModuleCollection(IntPtr appContext)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
Could not load file or assembly 'Elmah' or one of its dependencies.
The system cannot find the file specified.
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
at System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
at System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
at System.Web.Configuration.ConfigUtil.GetType(String typeName, String propertyName, ConfigurationElement configElement, XmlNode node, Boolean checkAptcaBit, Boolean ignoreCase)
Я не нашел полезных ресурсов для преобразования в формат проекта .net 4.7.2 и ms build 15.
PropertyGroup
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<ProjectId>test</ProjectId>
<version>1.0.0</version>
<TargetFrameworks>net472</TargetFrameworks>
<TargetFramework>net472</TargetFramework>
<PlatformTarget>x64</PlatformTarget>
<OutputType>Library</OutputType>
<OutputPath>bin\</OutputPath>
<RunCommand>$(MSBuildExtensionsPath64)\..\IIS Express\iisexpress</RunCommand>
<RunArguments>/path:"$(MSBuildProjectDirectory)" /port:52451</RunArguments>
</PropertyGroup>
</Project>
Web.config
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
<aspNetCore processPath="dotnet.exe" arguments=".\WebApplication6.dll" stdoutLogEnabled="false" stdoutLogFile="\\?\%home%\LogFiles\stdout" />
Global.asax
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
Я пытаюсь понять, правильный ли мой подход или нет. Могу ли я преобразовать проект в формат Ms Build 15 и использовать .net Framework 4.7.2 без использования ядра asp.net и развернуть его в веб-приложении Azure?
После публикации в веб-приложении Azure выше строки web.config добавляются по умолчанию. Не уверен, почему эти строки добавляются, если я не ссылаюсь на ядро .net.