2016-09-22 30 views
0

我寫了一個MVC6網站和處理代表網站的Azure的消息和Blob存儲控制檯應用程序。在我的開發機器上一切正常,我可以在Azure上成功部署和運行該網站。轉換控制檯應用程序,以WebJob /加入MVC6網站作爲依賴項目

什麼我絆倒的是如何「鏈接」控制檯應用程序和網站mvc6這樣,當我發佈網站的控制檯應用程序/自動webjob被公佈。

控制檯應用程序是建立在默認的控制檯應用程序模板。它的project.json文件是:

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "emitEntryPoint": true 
    }, 

    "dependencies": { 
    "ConnellData": "1.0.0-*", 
    "WindowsAzure.Storage": "7.2.1", 
    "Microsoft.Azure.WebJobs": "1.1.2", 
    "Microsoft.Azure.WebJobs.Core": "1.1.2", 
    "Microsoft.EntityFrameworkCore": "1.0.1", 
    "Microsoft.Web.WebJobs.Publish": "1.0.12", 
    "Microsoft.WindowsAzure.ConfigurationManager": "3.2.1", 
    "Newtonsoft.Json": "6.0.8", 
    "Serilog": "2.2.1", 
    "Serilog.Sinks.TextWriter": "2.0.0", 
    "UploadFramework": "1.0.0-*", 
    "ConnellDBF": "1.0.0-*", 
    "PDFsharp-MigraDoc-GDI": "1.50.4000-beta3b", 
    "Zen.Barcode.Rendering.Framework": "3.1.10729.1" 
    }, 

    "frameworks": { 
    "net46": { 
     "frameworkAssemblies": { 
     "System.Configuration": "4.0.0.0", 
     "System.IO.Compression": "4.0.0.0" 
     } 
    } 
    } 
} 

正如你所看到的,它是建立在Net46之上的,就像mvc6網站項目一樣。

當我右鍵點擊控制檯應用程序項目,沒有選擇將其發佈爲一個天青webjob。同樣,當我右鍵單擊網站項目時,Add下面沒有任何選項來添加「依賴」webjob。

我添加了一個虛擬WebJob項目,建成關閉默認WebJob模板,到解決方案,並已預計「發佈爲天青WebJob」選項。很顯然,我的開發機器上安裝了正確的東西。這只是我在控制檯應用程序的配置/設置中丟失了一些東西(也可能是網站)。

想法或建議?

+0

當你說mvc6你的意思是asp.net核心? – Thomas

+0

是的,它是建立在asp.net核心上的mvc6網站 –

回答

0

你安裝了webjobs SDK嗎?我已經和我看到「發佈爲天青Webjob」選項時,我就在Visual Studio中的項目點擊

Visual Studio Screenshot

更多的信息在這裏

https://azure.microsoft.com/en-gb/documentation/articles/websites-dotnet-deploy-webjobs/

+0

是的,我有。這就是爲什麼我能夠在使用「默認」VS WebJob模板添加到解決方案的應用中看到該選項。問題是該選項沒有出現在我編寫的net46控制檯應用程序中,並且想用作WebJob。 –

+0

你檢查了鏈接嗎?有一個名爲「爲現有控制檯應用程序項目啓用WebJobs部署」的部分,該部分爲您提供了兩個選項,可以將現有控制檯應用程序部署爲webjob。 –

+0

是的,納西爾,我做到了。事實上,這是我在發佈任何東西之前發現的鏈接之一。儘管我最終確實得到了一個手動上傳的方法來工作......在我偶然發現UTF-8 BOM問題並解決它之後,說明和替代方案沒有任何幫助。 –

0

我始終沒弄清楚爲什麼涉及將控制檯應用程序作爲WebJob發佈的上下文菜單選項不會出現。這可能與VS2015工具沒有抓住ASPNET Core有關。

無論如何,我可以通過手動將控制檯應用上傳到wwwroot/App_Data/jobs/continuous /來解決問題。我通過FTP做到了這一點。

但是,獲取控制檯應用程序>>在Azure下運行< <是另一個問題。 WebJob應用程序通常由網站在啓動時調用一個run.cmd批處理文件。這個run.cmd文件,在我的情況下,包含一行調用控制檯應用程序的執行(UploadProcessor.exe,在我的情況)。

不幸的是,默認情況下,VS2015會在每個創建的文本文件中保存一個「UTF-8字節順序標記」,Azure處理器由於某些奇怪的原因不知道如何識別這組標記字符和爆炸

解決方案是在VS2015中爲run.cmd文件執行另存爲,然後遍歷選項以將文件保存爲UTF-8 >>不帶< < a BOM。必須在創建run.cmd時執行一次;此後,VS2015將記住您的「無BOM」設置。

我多一些在寫這在http://imperfect.olbert.com/2016/09/23/azure-webjobs-hidden-utf-8-parameters-and-azure/

希望的Azure團隊將解決這個問題簡單,但惱人的問題。

相關問題