Nic*_*Lie 8 c# asp.net-mvc visual-studio asp.net-mvc-5 visual-studio-2015
我正在尝试在VS 2015 Enterprise RC上使用ASP.NET 5及其所有新功能.为了确保顺利的端到端部署,我尝试通过VS Publish功能将应用程序部署到非Azure私有服务器.

但是,我错过了一个非常重要的功能:发布到非Azure服务器的能力.

在早期版本的Visual Studio中(我使用的是VS 2013),自定义选项就在那里.

我尝试过修改项目属性,但没有尝试如何将我的ASP.NET 5应用程序部署到自定义服务器.有任何想法吗?
它是可行的(毕竟,发布到Azure网站也在内部使用WebDeploy),但它现在有点棘手,需要你调整一些东西.这是你可以做的(对于VS 2015 CTP6):
Asp.net vnext的目录结构与常规的Asp.net应用程序略有不同.在两个主要的目录:approot和wwwroot(如果应用程序部署到本地文件系统,你可以通过他们浏览).我们想要部署这两个目录,但IIS网站路径必须指向wwwrootdir.这个问题似乎在Web Deploy 3.6中得到解决,但我只是手动处理它.为此,您可以在IIS中创建两个网站/应用程序:
mysite-deploy.wwwroot目录.我会简单地命名mysite.YourprojectDir\Properties\PublishProfilesmysite.pubxml)将以下内容粘贴到pubxml中:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>    
  </PropertyGroup>
</Project>
mysite-deploy).Web Publish Activity窗口中的进度.开箱即用,发布可能会失败.现在它变得棘手:)
起初,我得到的是这个错误:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.AspNet.Publishing.targets(205,5): Error ERROR_FAILED_TO_DESERIALIZE: Web deployment task failed. ()
Publish failed to deploy.
我们试着解决这个问题.
Publish再次打开窗口,然后选中Publish using Powershell script选项Settings卡上的选项.再试一次.
如果出现错误:ERROR_CERTIFICATE_VALIDATION_FAILED这表示IIS Management Service您的计算机不信任目标计算机上的SSL证书.您可以尝试下载证书,将其添加到受信任的证书存储区,也可以完全禁用证书验证.
在后一种情况下,您需要编辑publish-module.psm1位于C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts\1.0.0-pre\publish-module.psm1.找到片段:
        # add excludes
        $sharedArgs.ExtraArgs += (GetInternal-ExcludeFilesArg -publishProperties $publishProperties)
        # add replacements
        $sharedArgs.ExtraArgs += (GetInternal-ReplacementsMSDeployArgs -publishProperties $publishProperties)
并添加这个:
$sharedArgs.ExtraArgs += '-allowUntrusted'
检查被调用的确切命令行 - Web Publish Activity Window应该记录一行,从开始Calling msdeploy with the command:.寻找ComputerName=.如果它看起来像这样:/ ComputerName='https://https://myhost:8172/msdeploy.axd'msdeploy.axd' , then you should change服务器field in Publish profile连接tab to:myhost:8172 . That's because the powershell script automatically addshttps:// and/ msdeploy.axd`.
More Information: The provider 'contentPathLib' could not be found.  Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_PROVIDER_NOT_FOUND.
再C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts\1.0.0-pre\publish-module.psm1去找一下这条线:
$publishArgs += '-enableLink:contentLibExtension'
这似乎是Web Deploy 3.6的一个特性,但似乎服务器端也必须支持它.要禁用它,只需注释掉这一行.警告:此更改可能会影响到Azure网站的PowerShell部署.
现在您的站点正在部署,还有一件事.我们想要部署approot和wwwroot目录,而只是部署目录的内容wwwroot.要解决这个问题,我们需要再次编辑C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts\1.0.0-pre\publish-module.psm1.
找到说:
$webrootOutputFolder = (get-item (Join-Path $packOutput $webroot)).FullName
然后,添加一个新行:
$webrootOutputFolder = $webrootOutputFolder | split-path -parent
这会将已发布的文件夹设置为父文件夹wwwroot,这正是我们所需要的.在再次发布之前,您可能希望清除服务器上的站点目录 - 现在发布的目录结构将不同.
此时,应该在服务器上部署并提供该站点.在服务器端,你应该看到两个目录:approot和wwwroot,也许一些脚本文件.
您必须自己调试任何服务器端错误.
| 归档时间: | 
 | 
| 查看次数: | 2529 次 | 
| 最近记录: |