簡體   English   中英

通過VS 2015 RC進行非Azure部署

[英]Non-Azure Deployment through VS 2015 RC

我正在嘗試在VS 2015 Enterprise RC上使用ASP.NET 5及其所有新功能。 為了確保順利的端到端部署,我嘗試通過VS Publish功能將應用程序部署到非Azure私有服務器。 VS 2015 RC發布選項

但是,我錯過了一個非常重要的功能:發布到非Azure服務器的能力。 VS 2015 RC發布

在早期版本的Visual Studio中(我使用的是VS 2013),自定義選項就在那里。

自定義發布選項

我嘗試過修改項目屬性,但沒有嘗試如何將我的ASP.NET 5應用程序部署到自定義服務器。 有任何想法嗎?

它是可行的(畢竟,發布到Azure網站也在內部使用WebDeploy),但它現在有點棘手,需要你調整一些東西。 這是你可以做的(對於VS 2015 CTP6):

制備

Asp.net vnext的目錄結構與常規的Asp.net應用程序略有不同。 這兩個主要目錄是: approotwwwroot (如果將應用程序部署到本地文件系統,則可以瀏覽它們)。 我們想要部署這兩個目錄,但IIS網站路徑必須指向wwwroot目錄。 這個問題似乎在Web Deploy 3.6中得到解決,但我只是手動處理它。 為此,您可以在IIS中創建兩個網站/應用程序:

  • 一個指向根應用程序目錄並將僅用於部署。 我將它命名為mysite-deploy
  • 一個將用於實際托管我們的網站,並將指向wwwroot目錄。 我將其命名為mysite

部署

  1. 轉到YourprojectDir\\Properties\\PublishProfiles
  2. 創建一個空的pubxml文件(即mysite.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>
  1. 當您在Visual Studio中按“發布”時,您應該在列表中看到此新配置文件。
  2. 像往常一樣填寫“連接”選項卡(設置“服務器”,“站點名稱”等)。 請記住將站點名稱設置為部署站點( mysite-deploy )。
  3. 驗證連接
  4. 嘗試預覽選項卡 - 它很可能不會起作用,但如果確實如此 - 你就完成了。
  5. 單擊“發布”
  6. 在“ Web Publish Activity窗口中檢查進度。

可能的錯誤

開箱即用,發布可能會失敗。 現在它變得棘手:)

ERROR_FAILED_TO_DESERIALIZE

起初,我得到的是這個錯誤:

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窗口,然后在“ Settings選項卡上選中“ Publish using Powershell script Settings選項。 再試一次。

ERROR_CERTIFICATE_VALIDATION_FAILED

如果出現錯誤: ERROR_CERTIFICATE_VALIDATION_FAILED ,則表示您的計算機不信任目標計算機上的IIS Management Service的SSL證書。 您可以嘗試下載證書,將其添加到受信任的證書存儲區,也可以完全禁用證書驗證。

在后一種情況下,您需要編輯位於C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE\\Extensions\\Microsoft\\Web Tools\\Publish\\Scripts\\1.0.0-pre\\publish-module.psm1 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'

ERROR_COULD_NOT_CONNECT_TO_REMOTESVC

檢查正在調用的確切命令行 - 在Web Publish Activity Window中應該記錄一行,從Calling msdeploy with the command:開始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:服務器field in Publish profile , then you should change tab to: myhost:8172 . That's because the powershell script automatically adds . That's because the powershell script automatically adds https:// and / msdeploy.axd`。

ERROR_PROVIDER_NOT_FOUND

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部署

僅部署wwwroot目錄的內容

現在您的站點正在部署,還有一件事。 我們希望部署approotwwwroot目錄,而不是只有內容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的父級,這正是我們所需要的。 在再次發布之前,您可能希望清除服務器上的站點目錄 - 現在發布的目錄結構將不同。

測試

此時,應該在服務器上部署並提供該站點。 在服務器端,您應該看到兩個目錄: approotwwwroot以及一些腳本文件。

您必須自己調試任何服務器端錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM