Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Visual Studio 2017中安装.NET核心MVC应用程序以使用完整的IIS(不是IIS Express)_Iis_Asp.net Core_Asp.net Core Mvc_Visual Studio 2017 - Fatal编程技术网

在Visual Studio 2017中安装.NET核心MVC应用程序以使用完整的IIS(不是IIS Express)

在Visual Studio 2017中安装.NET核心MVC应用程序以使用完整的IIS(不是IIS Express),iis,asp.net-core,asp.net-core-mvc,visual-studio-2017,Iis,Asp.net Core,Asp.net Core Mvc,Visual Studio 2017,在Visual Studio 2015中,通过右键单击项目并转到属性,您可以轻松地将MVC应用程序设置为使用完整的IIS 目前尚不清楚如何在VisualStudio2017的vanilla.NET核心Web(MVC)项目中做到这一点 我在谷歌上找不到任何相关信息-我找错地方了吗?你可以在iis后面托管它 除了安装iis之外,您还必须做四件事: 安装.NET核心Windows服务器托管捆绑包。可以在这里找到 在应用程序依赖项中包括对Microsoft.AspNetCore.Server.IISI

在Visual Studio 2015中,通过右键单击项目并转到属性,您可以轻松地将MVC应用程序设置为使用完整的IIS

目前尚不清楚如何在VisualStudio2017的vanilla.NET核心Web(MVC)项目中做到这一点


我在谷歌上找不到任何相关信息-我找错地方了吗?

你可以在iis后面托管它

除了安装iis之外,您还必须做四件事:

  • 安装.NET核心Windows服务器托管捆绑包。可以在这里找到

  • 在应用程序依赖项中包括对Microsoft.AspNetCore.Server.IISIntegration包的依赖项。通过将.UseIISIntegration()扩展方法添加到WebHostBuilder(),将IIS集成中间件合并到应用程序中

  • 打开cmd并在项目中运行dotnetpublish

  • 在iis上托管已发布的应用程序。在应用程序池中,.NET CLR版本设置为“无托管代码”非常重要

  • 有一篇关于如何将应用程序发布到iis的更详细的文章

    我没有找到直接从visual studio 2017执行此操作的方法

    更新: 您可以使用FlubuCore工具(C#fluent builder)自动执行步骤3和步骤4。您必须编写类似以下内容的flubu脚本(示例仅适用于步骤4):

    然后,要将其与visual studio 2017集成,请在预构建或后构建事件中使用命令“dotnet flubu iis.install”使用flubu dotnet cli工具运行此脚本。我宁愿从命令行显式运行该工具

    您可以在此处找到有关flubu以及如何开始的更多信息:

    .NET Core在2017 RTM中不支持IIS。您可以直接使用IIS Express或Kestrel。我们正在研究对IIS的NET Core支持,以便在2017年进行更新。@Andrewall MSFT您的意思是,如果我使用VS2017构建ASP.NET Core网站,我将无法像使用VS2015一样在IIS后托管它(通过发布…)?这基本上意味着我们现在还不能发布基于VS2017的ASP.Net内核用于生产asof?此外,这是否意味着如果我需要继续在IIS后面托管,我就不应该像Microsoft.AspNetCore.Server.Kestrel那样在VS2015下将我的nuget包从1.1.0更新到1.1.1?谢谢..NET Core绝对支持IIS。Andrew的意思是,用于ASP.NET核心的Visual Studio工具还不支持使用IIS进行开发的项目。对于使用Visual Studio进行开发,您的主要选项是IIS Express或Kestrel。@SayedIbrahimHashimi是正确的,我的评论是在项目中直接使用Visual Studio 2017与IIS进行调试/运行的上下文中。如下文所述,.NET Core在Visual StudioHanks的上下文之外与IIS一起工作。我想,随着新的VS&Windows服务器版本的发布,这可能在未来几年变得容易得多?!。。谢谢,第一句话吓了我一跳!
    protected override void ConfigureTargets(ITaskContext session)
    {
        session.CreateTarget("iis.install").Do(IisInstall);
    }
    
    private static void IisInstall(ITaskContext context)
    {
        context.Tasks().IisTasks()
            .CreateAppPoolTask("SomeAppPoolName")
            .ManagedRuntimeVersion("No Managed Code")
            .Mode(CreateApplicationPoolMode.DoNothingIfExists)
            .Execute(context);
    
        context.Tasks().IisTasks()
            .CreateWebsiteTask()
            .WebsiteName("SomeWebSiteName")
            .BindingProtocol("Http")
            .Port(2000)
            .PhysicalPath("SomePhysicalPath")
            .ApplicationPoolName("SomeAppPoolName")
            .WebsiteMode(CreateWebApplicationMode.DoNothingIfExists)
            .Execute(context);
    }