首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么web.config是在发布时创建的,而不是在Asp.Net核心API中构建项目时创建的?

问为什么web.config是在发布时创建的,而不是在Asp.Net核心API中构建项目时创建的?
EN

Stack Overflow用户
提问于 2020-05-27 18:39:48
回答 2查看 4.3K关注 0票数 3

我有Asp.net Core3.1API项目。当我构建它时,它不会创建任何web.config文件,但是当我使用VS 2019在文件夹中发布API时,它会创建一个web.config文件。那么,为什么它不在构建时创建web.config (我认为它不应该创建,因为项目中没有web.config文件),但是为什么它在发布时创建web.config文件呢?

编辑:我试图通过八达通部署应用程序,所以我复制bin文件夹内容,我也需要web.config。所以现在,我已经在项目中手动创建了web.config,然后构建了这个项目。因此它将web.config复制到bin文件夹。所以这是正确的方法吗?或者,是否有任何方法可以在bin文件夹中生成web.config而不手动创建它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-28 02:25:43

据我所知,web.config用于告诉IIS如何使用asp.net核心模块和处理程序来承载asp.net核心应用程序。在VS中构建和测试应用程序时,不需要创建web.config,因为它将读取launchSettings.json而不是web.config。

Web.config是一个服务器配置文件,用于配置ASP.NET核心模块。

web.config文件可以提供控制活动IIS模块的附加IIS配置设置。有关能够使用ASP.NET核心应用程序处理请求的IIS模块的信息,请参阅IIS模块主题。

Asp.net核心web.config内容(没有这个文件,我们就无法直接在IIS上托管asp.net核心应用程序)

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\basket.api.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
           </aspNetCore>
    </system.webServer>
  </location>
</configuration>
票数 1
EN

Stack Overflow用户

发布于 2022-04-20 18:19:06

IIS需要运行在那里的应用程序的web.config文件。

在ASP.NET核心中,web.config是延迟生成的。假设(有缺陷,IMO)在准备发布到IIS之前不需要web.config。但是,如果您的IIS应用程序指向您的本地代码实例,这样您就不必每次进行代码更改并希望在IIS中测试应用程序时重新发布应用程序,该怎么办?或者,如果像OP一样,您想要使用备用的部署方法呢?

在这种情况下,解决办法是发布应用程序一次,获取生成的web.config,并将其复制到VS项目的根目录(与bin文件夹相同的级别)。随后的构建将将web.config复制到bin\debug\net6.0。仍然不理想,但这比手动创建web.config和可能在文件中引入错误要好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62050503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档