ASP.net Core 1.0 web.config wird überschrieben und verursacht CGI-Ausnahmen

Ich habe eine funktionierende web.config wie unten gezeigt:

<?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>

Aber irgendwie aktualisiert Visual Studio meine web.config auf:

<?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>

Dies funktioniert in Visual Studio über die Veröffentlichungsmenüs (und nach der Bereitstellung in einer Azure-Webanwendung). Wenn ich jedoch Dotnet-CLI wie Dotnet Publish verwende, funktioniert dies nicht, da die Datei web.config mit den Variablen% LAUNCHER_PATH% und% LAUNCHER_ARGS% anstelle der von mir gewünschten Variablen dotnet und. \ Example.dll beibehalten wird.

Hinweis: Mein Build-Server verschmutzt die Datei web.config nicht, wenn Dotnet Restore und Dotnet Build über die Befehlszeile verwendet werden. Auch nicht, wenn ich mit MSBuild meine SLN baue. Ich habe Visual Studio 2015 lokal und auf meinem Build-Server und habe überprüft, ob meine Befehlszeilenversionen mit "dotnet" cli übereinstimmen.

Wie kann ich Visual Studio nicht bekämpfen, indem ich meine web.config vor jedem Commit zurücksetze? Ich mache offensichtlich etwas falsch, das eine einfache Korrektur der Konfiguration sein sollte?

Aktualisieren

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"
  }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage