ASP.net core 1.0 web.config перезаписывается, вызывая исключения CGI
У меня есть рабочий web.config, как показано ниже:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\Example.dll" stdoutLogEnabled="false" stdoutLogFile="\\?\%home%\LogFiles\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
Но каким-то образом Visual Studio обновляет мой web.config для:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile="\\?\%home%\LogFiles\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
Это работает в Visual Studio через меню публикации (и работает после развертывания в веб-приложении Azure). Однако, если я использую CLI dotnet, такой как публикация dotnet, он не будет работать, поскольку он сохраняет этот web.config с переменными:% LAUNCHER_PATH% и% LAUNCHER_ARGS% вместо желаемого: dotnet и. \ Example.dll.
Примечание. Мой сервер сборки не загрязняет файл web.config при использовании восстановления dotnet и сборки dotnet через командную строку. Ни при использовании MSBuild для сборки моего sln. У меня есть Visual Studio 2015 локально и на моем сервере сборки, и я проверил, совпадают ли версии моей командной строки для "dotnet" cli.
Как я могу не бороться с Visual studio, откатывая мой web.config перед каждым коммитом? Я явно делаю что-то не так, что должно быть легко исправить конфигурацию?
Обновить:
Startup.cs
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
Appsettings.json
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}
Program.cs
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
Project.json
{
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true,
"exclude": [
"wwwroot",
"typings",
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
]
},
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
}
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version": "1.0.0-preview2-final",
"imports": "portable-net45+win8+netstandard1.6"
},
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"imports": "portable-net45+win8+netstandard1.6"
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"netstandard1.4",
"dnxcore50"
],
"dependencies": {
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
"Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0",
"Microsoft.AspNetCore.Hosting": "1.0.0",
"System.ServiceModel.Primitives": "4.1.0",
"System.ServiceModel.Http": "4.1.0",
"System.Private.ServiceModel": "4.1.0",
"Presentation.Common": "*",
"System.Runtime": "4.1.0",
"System.Runtime.Numerics": "4.0.1",
"SharedContract": "*"
}
}
},
"runtimes": {
"win10-x64": {},
"win10-x86": {},
"win8-x64": {},
"win8-x86": {}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"publishOptions": {
"include": [
"wwwroot",
"Views",
"appsettings.json",
"web.config"
]
},
"scripts": {
"prepublish": [ "npm install", "gulp rebuild", "gulp min" ],
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
},
"devDependencies": {
"gulp": "^3.9.1",
"gulp-clean": "^0.3.2",
"gulp-concat": "^2.6.0",
"gulp-less": "3.0.2",
"gulp-tsc": "^1.1.5",
"gulp-typescript": "^2.13.1",
"lite-server": "^2.2.0",
"path": "^0.12.7",
"rimraf": "2.3.2",
"typescript": "^1.8.10",
"typings": "^0.8.1"
}
}