在IIS上运行时,使用net core 2修改生成的web.config文件

时间:2018-05-02 14:40:30

标签: c# asp.net-core-2.0 asp.net-core-webapi

我有一个webapi 2.0,我使用ftp发布到运行IIS 8.5的Windows 2012服务器。

我遇到了一个问题,我可以在这里使用此链接解决这个问题;

Error 405 – Methods not Allowed in ASP.NET Core PUT and DELETE requests

所以添加;

<modules runAllManagedModulesForAllRequests="false">
    <remove name="WebDAVModule" />
</modules>

我可以解决我的PUT和DELETE问题,但每当我发布时,我都需要对web.config进行物理编辑以反映上面代码的添加?

当我使用带有Web部署的ftp发布时,有人能告诉我如何自动添加吗?

我的program.cs中有默认构建;

        public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();

1 个答案:

答案 0 :(得分:1)

我所做的一个解决方案是创建一个Powershell脚本,该脚本将根据您的需要修改您的web.config文件并将其作为预发布目标执行。

将脚本保存在项目目录中并更新.csproj文件,以便它在发布项目之前运行:

在Visual Studio中左键单击项目名称 - &gt; &#34;编辑.csproj&#34;并将其插入<Project>标记内的某处:

<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish" Condition=" '$(IsCrossTargetingBuild)' != 'true' ">
    <Exec Command="powershell.exe -NonInteractive -File Prepublish.ps1" />
</Target>

编辑: 我的任务更简单,我只需删除添加到LAUNCHER_ARGS元素的<aspNetCore>,所以我只用一个空字符串替换了一个简单的字符串,

Prepublish.ps1:

(Get-Content web.config).Replace(" arguments=`"%LAUNCHER_ARGS%`"", "") | Set-Content web.config