我在Visual Studio中使用新的xproj扩展和project.json创建了一个dotnet cli WebApp。
dotnet new --t web --lang c#
我有一个网站在.NetCoreApp上运行并运行就好了。但是,我无法在不添加中间件的情况下在IIS中加载该站点,具体取决于IIS,我宁愿不这样做。
所以我使用的是IIS Express。
为此,我必须在调试模式下运行项目以运行IIS以便能够使用该站点。
我想知道的是我如何让IIS Express保持运行,并在运行项目时附加到它。
我已阅读有关禁用"编辑并继续"的所有指南。这确实适用于ASP.Net Web应用程序,但这是一个dotnet核心WebApp,并不是同一个项目类型。它没有“属性”窗口,其中包含禁用“编辑”和“继续”的选项,并且在IDE的“调试选项”中禁用“编辑并继续”无效。
当我停止运行项目时,IIS关闭。
有什么想法吗?
或者,如何将其配置为在IIS中本地运行而不依赖它,我可以提出的最佳选择是使用条件编译。
答案 0 :(得分:5)
我的问题的全部目的是能够在不使用Visual Studio中的f5且没有附加调试器的情况下运行我的站点。
事实证明,解决方案很简单。
您可以在控制台终端的Kestrel中运行它。
只需打开终端或命令提示符到项目根目录并输入:
dotnet run
这会对您的项目运行红隼,并告诉您它所在的端口。然后,您可以在浏览器中点击http://localhost:5000(或端口是)。
更新:您可以在整个应用程序中终止对IIS Express的依赖,并在Kestrel中运行f5。
要做到这一点:
重复“Kestrel Production”的上述选项,但将ASPNETCORE_ENVIRONMENT设置为“Production”
ASPNETCORE_ENVIRONMENT用于处理您的json配置转换。
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进行开发(本地),登台和制作,那么您将创建3个appSettings.json文件
appSettings.json
appSettings.Development.json
appSettings.Staging.json
appSettings.Production.json
然后使用上面的选项:true config选项使.Staging.Json等文件可选。
所以在appSettings.json中,你拥有在所有环境中都一样的东西。
然后在appSettings.Development.json中,您可能拥有在本地运行时只需要的东西。
Etc等
您为每个环境创建一个配置文件,这样如果您运行“Kestrel Development”,它将使用appSettings.Development.Json
如果你运行“Kestrel Staging”,它会使用appSettings.Staging.Json。
如果你运行“Kestrel Production”,它会使用appSettings.Production.json。
这也会影响您的tagHelper在MVC视图中的工作方式,例如
<environment names="Development">
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" />
</environment>
<environment names="Staging,Production">
<link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/css/bootstrap.min.css"
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
<link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
</environment>
在该html中,如果您正在运行“Kestrel Development”,那么将输出用于开发的环境标记内的html。
如果您正在运行Kestrel Production,那么将输出用于登台,生产的环境标记内的html。
答案 1 :(得分:3)
如果在没有调试器的情况下运行(Ctrl + F5或菜单Debug - &gt; Run Without Debugger),应用程序将继续在IIS Express中运行(假设您使用默认设置)。您可以进行更改并刷新浏览器,而无需发布或重新启动。
使用常规IIS,您可以将网站/应用程序指向项目文件夹,并且您无需在每次更改后发布。