Rya*_*ann 2 c# asp.net-core dotnet-cli
我使用新的xproj扩展和project.json在Visual Studio中有一个dotnet cli WebApp.
dotnet new --t web --lang c#
Run Code Online (Sandbox Code Playgroud)
我有一个网站工作并运行.NetCoreApp就好了.但是,我无法在不添加中间件的情况下在IIS中加载站点,具体取决于IIS,我宁愿不这样做.
所以我使用的是IIS Express.
为此,我必须运行项目以使IIS运行以便能够在调试模式下使用该站点.
我想知道的是我如何让IIS Express保持运行,并在运行项目时附加到它.
我已阅读有关禁用"编辑并继续"的所有指南.这确实适用于ASP.Net Web应用程序,但这是一个dotnet核心WebApp,并不是同一个项目类型.它没有"属性"窗口,其中包含禁用"编辑"和"继续"的选项,并且在IDE的"调试选项"中禁用"编辑并继续"无效.
当我停止运行项目时,IIS关闭.
有任何想法吗?
或者,我如何将其配置为在IIS中本地运行而不依赖它,我可以提出的最佳选择是使用条件编译.
我的问题的全部目的是能够在不使用Visual Studio中的f5且不附加调试器的情况下运行我的站点.
事实证明,解决方案很简单.
您可以在控制台终端中的Kestrel中运行它.
只需打开一个终端或命令提示符到您的项目根目录并键入:
dotnet run
Run Code Online (Sandbox Code Playgroud)
这将对你的项目运行红隼,并告诉你它在哪个端口.然后你可以在浏览器中点击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();
}
Run Code Online (Sandbox Code Playgroud)
那么如果您想要appSettings.json用于开发(本地),暂存和生产,那么您将创建3个appSettings.json文件
appSettings.json
appSettings.Development.json
appSettings.Staging.json
appSettings.Production.json
Run Code Online (Sandbox Code Playgroud)
然后使用上面的选项:true config选项使.Staging.Json等文件可选.
所以在appSettings.json中,你拥有在所有环境中都一样的东西.
然后在appSettings.Development.json中,您可能拥有在本地运行时只需要的东西.
等等
您为每个环境创建一个配置文件,因此如果您运行"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>
Run Code Online (Sandbox Code Playgroud)
在那个html中,如果你正在运行"Kestrel Development",那么输出用于开发的环境标签内的html.
如果您正在运行Kestrel Production,那么将输出用于登台,生产的环境标记内的html.