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 2015 如何在Windows Server 2012R2上从Visual Studio 2015(+;U1)ASP.NET核心发布到IIS?_Visual Studio 2015_Asp.net Core - Fatal编程技术网

Visual studio 2015 如何在Windows Server 2012R2上从Visual Studio 2015(+;U1)ASP.NET核心发布到IIS?

Visual studio 2015 如何在Windows Server 2012R2上从Visual Studio 2015(+;U1)ASP.NET核心发布到IIS?,visual-studio-2015,asp.net-core,Visual Studio 2015,Asp.net Core,这个问题可以看作是两年前的一个更新,它询问如何从visual studio 2015中的开放式ASP.NET核心解决方案(简称ASP.NET 5)发布到我的本地网络上的另一台机器上,该机器上部署了IIS,应该用来运行DNX运行时和我正在编写的ASP.NET应用程序。由于向导没有为我提供任何帮助,我相信我必须完全手动配置MSDEPLOY解决方案及其配置文件,或者其他与之相当的东西 从最初的问题开始,情况发生了很大的变化,所以我要求使用ASP.NET 5和DNX 1.0 RC1 还有一些人问如何做到

这个问题可以看作是两年前的一个更新,它询问如何从visual studio 2015中的开放式ASP.NET核心解决方案(简称ASP.NET 5)发布到我的本地网络上的另一台机器上,该机器上部署了IIS,应该用来运行DNX运行时和我正在编写的ASP.NET应用程序。由于向导没有为我提供任何帮助,我相信我必须完全手动配置MSDEPLOY解决方案及其配置文件,或者其他与之相当的东西

从最初的问题开始,情况发生了很大的变化,所以我要求使用ASP.NET 5和DNX 1.0 RC1

还有一些人问如何做到这一点,提到WebDeploy 3.6,也提到了将近2年的beta版

因此,我认为,对于Visual Studio 2015,这个问题应该有一个新的、不同的答案,因为ASP.NET 5已经成为候选版本,并且功能已经完成。现在是怎么做的

另外,应该明确的是,我所说的不是从
C:\DEV\WORKINGCOPY
上的Visual Studio解决方案部署到我自己机器的
C:\inetpub\wwwroot
,而是通过网络dav或FTP或SMB共享将其复制到运行IIS的windows服务器盒

到目前为止,我所尝试的:

  • 在文件系统模式下使用内置的发布到Web向导。其结果似乎是,您可以通过web.cmd运行,该命令将执行dnx和kestrel,但不会构建可从Windows Server 2012上的IIS 8.x运行的捆绑包。此外,发布到文件系统模式创建了一系列内容,包括一组名为approt、logs和wwwroot的基本文件夹,我非常确定不应该将IIS设置为直接提供approt或logs文件夹。如果查看IIS中wwwroot\文件夹的副本,我会看到一个500-内部服务器错误。当IIS不知道如何将web.config放入其中并使用它做任何事情时,我希望它会这样做

  • 试图在命令提示符下手动使用
    dnu publish
    dnu pack
    ,希望我可以使用结果替换XYZ-publish.ps1 powershell文件PublishProfiles的内容。dnu发布命令失败,出现“bower未被识别为内部或外部命令”。dnu pack成功,但我不知道如何处理生成的.nupkg文件,以使它们在IIS上运行

我的总体目标是:

  • 一次单击或键入一个命令即可完成所有操作,包括任何预编译程序集的捆绑和构建(nuget软件包是vNext等效于inclassic.net程序集的概念)

  • 让我和其他读者清楚,在准备部署之前,IIS上的一次性设置任务是什么,每次单击“发布”时为您完成的任务是什么,以及如何设置这些任务

这似乎是目前ASP.NET 5上的文档非常薄弱的一个基本领域,并且该工具目前仅针对希望将捆绑部署到文件夹并从“dnx web”(kestrel)运行的用户或希望在Azure上部署的用户进行了优化(对于发布向导中的情况,此过程是完全自动化的)而不是那些希望部署到自己运行IIS的计算机上的人。发布向导缺少这一点(对我来说)非常明显案例;发布到我自己的Windows server box,并为我创建使其工作所需的任何IIS脚手架。

更新:包含基于powershell的部署场景(适用于azure),该场景可能适用于本地IIS服务器。请参阅该GitHub repo上的PublishAspNet5Website.ps1 powershell脚本

这个问题有很多因素,我找不到任何一个来源来确定所有这些因素

  • 首先,需要在IIS服务器上进行一些设置,根据,您必须选择将用于运行DNX/ASP.NET 5应用程序的应用程序池。您还应创建一个虚拟文件夹,然后将其转换为应用程序。根据该链接问题,您应使用.NET 4池。IIS服务器上的其他设置可能包括:lude设置服务器端工具以接受来自VisualStudio(IDE内部)和msbuild命令行(持续集成服务器)部署工具的传入发布请求

  • 因为Visual Studio 2015内部的向导(包括更新1中的向导)不提供“部署到域上的Windows服务器”之类的选项,您必须研究现有选项,如文件模式部署选项和azure部署选项,并根据这两个起点之一选择一些混合方法。您的资产包括powershell的所有功能,以及dnx/dnu工具的所有功能,包括其bower集成。您将根据需要捆绑/构建/编译,然后将结果发送到MSDEPLOY工具,然后需要为其编写配置(.pubxml)文件。您还可以选择完全忽略DEPLOY命令,并选择通过添加到dnx项目中的“staging”动词进行部署,以部署到staging服务器

  • 为了有任何希望将贫乏的起始文件集修改为完成问题中指定的工作所需的条件,您可能需要阅读MSDEPLOY上的文档。在internet上搜索时,我发现有一些.pubxml文件示例,其中显示了.pubxml是如何构造的。在部署配置文件文件夹中,您至少需要一个正确构造的.pubxml文件,以及另一个具有相同基本名称的文件,而扩展名为.ps1(powershell),无论使用哪种技术,它看起来都是相同的,因此唯一的原因是
    <?xml version="1.0" encoding="utf-8"?>
    <!--
     NOTE: I'm pretty sure that the publishprovider should NOT be the one shown here. 
     I do not know what it should be and will update this answer when I figure that fact out.
    -->
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <WebPublishMethod>MSDeploy</WebPublishMethod>
        <ADUsesOwinOrOpenIdConnect>False</ADUsesOwinOrOpenIdConnect>
        <PublishProvider>AzureWebSite</PublishProvider>
        <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
        <LastUsedPlatform>Any CPU</LastUsedPlatform>
        <SiteUrlToLaunchAfterPublish>http://ramsoftazurewebappdemo.azurewebsites.net</SiteUrlToLaunchAfterPublish>
        <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
        <ExcludeApp_Data>False</ExcludeApp_Data>
        <CompileSource>False</CompileSource>
        <_DefaultDNXVersion>dnx-clr-win-x86.1.0.0-rc1-update1</_DefaultDNXVersion>
        <UsePowerShell>True</UsePowerShell>
        <IISCommand>web</IISCommand>
        <WebRoot>wwwroot</WebRoot>
        <WwwRootOut>wwwroot</WwwRootOut>
        <IncludeSymbols>False</IncludeSymbols>
        <Native>False</Native>
        <IgnoreDNXRuntime>False</IgnoreDNXRuntime>
        <MSDeployServiceURL>myservername.mydomain.biz:443</MSDeployServiceURL>
        <DeployIisAppPath>MyWebAppPath</DeployIisAppPath>
        <RemoteSitePhysicalPath />
        <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
        <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
        <EnableMSDeployBackup>True</EnableMSDeployBackup>
        <UserName>$USERNAME</UserName>
        <_SavePWD>True</_SavePWD>
        <_DestinationType>AzureWebSite</_DestinationType>
      </PropertyGroup>
    </Project>
    
      "C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" 
      -source:IisApp='C:\dev\PublishOut\YourWebApp\wwwroot
       -dest:IisApp='YourIisAppName',
         ComputerName='https://yourcomputername.yourdomain.biz/msdeploy.axd',
         UserName='$USERNAME',
         Password='secr3t',
         IncludeAcls='False',AuthType='Basic' 
       -verb:sync -enableLink:contentLibExtension  
       -enableRule:DoNotDeleteRule -retryAttempts:3