2015-08-19 18 views
6

से Azure वेबसाइटों के लिए मैं एक डमी नमस्ते विश्व ASP.NET 5 (MVC 6) दृश्य स्टूडियो ऑनलाइन के Git में होस्ट प्रोजेक्ट बनाया। मैंने अपने Azure वेबसाइटों में निर्माण और तैनाती के लिए this document पर वर्णित चरणों का पालन किया।बिल्ड दृश्य स्टूडियो ऑनलाइन ERROR_FILE_IN_USE

यह मुझे कई प्रयासों के साथ विफल रहा क्योंकि बिल्ड "NuGet पैकेज को पुनर्स्थापित करने में असमर्थ" या मौजूदा wwwfolder (जो मुझे इसे काम करने के लिए स्रोत नियंत्रण में प्रतिबद्ध था) के साथ असफल रहा, लेकिन मुझे यह काम मिल गया और ऐप है अभी भी अच्छा चल रहा है।

जिस मुद्दे की मुझे आवश्यकता है, वह निरंतर एकीकरण कॉन्फ़िगरेशन के साथ है। विजुअल स्टूडियो में मैंने अपनी मास्टर शाखा में चेक-इन होने पर निर्माण/तैनाती के लिए सीआई ट्रिगर का चयन किया है। यह प्रयास को सही ढंग से ट्रिगर करता है लेकिन यह लगातार इस त्रुटि के साथ विफल रहता है।

Error Code: ERROR_FILE_IN_USE More Information: Web Deploy cannot modify the file 'AspNet.Loader.dll' on the destination because it is locked by an external process. In order to allow the publish operation to succeed, you may need to either restart your application to release the lock, or use the AppOffline rule handler for .Net applications on your next publish attempt.

कैसे इस समस्या को हल करने के लिए?

धन्यवाद।

पुनश्च: इसके अलावा, मैं नहीं जानता कि क्यों तैनाती के तहत Azure वेबसाइटों में मैं लॉग नहीं देख सकता। जब मैं गिटहब हुक का उपयोग कर रहा था तो यह सभी असफल/सफल तैनाती प्रदर्शित करता था।

वेब एप्लिकेशन के तहत Azure में आमतौर पर

> तैनाती

उत्तर

1

मैं एक ही मुद्दे में भाग गया। यदि आपके पास एकाधिक परिनियोजन स्लॉट हैं तो इसके साथ निपटने के शायद अधिक शानदार तरीके हैं, लेकिन तैनाती के दौरान डाउनटाइम के एक मिनट होने पर मेरी स्थिति के लिए स्वीकार्य है।

आप स्टार्ट-एज़ूर वेब्साइट और स्टॉप-एज़ूर वेबसाइट का उपयोग करने के लिए स्क्रिप्ट को संशोधित कर सकते हैं नोट: मैंने $ hostNameIndex जोड़ा क्योंकि यदि आप डोमेन नाम जोड़ते हैं तो इसे बदलने की आवश्यकता है। इसके बाद आप इसे Azure Powershell स्क्रिप्ट Arguments में पास कर सकते हैं।

 
    param($websiteName, $packOutput, $hostNameIndex = 1) 
    Stop-AzureWebsite -Name $websiteName 
    $website = Get-AzureWebsite -Name $websiteName 

    # get the scm url to use with MSDeploy. 
    # By default this will be the second in the array. Changes when you add custom domain names. 
    # Here I have the default and 2 custom so scm is in 4th position ie. index: 3 
    $msdeployurl = $website.EnabledHostNames[$hostNameIndex] 

    $publishProperties = @{'WebPublishMethod'='MSDeploy'; 
         'MSDeployServiceUrl'=$msdeployurl; 
         'DeployIisAppPath'=$website.Name; 
         'Username'=$website.PublishingUsername; 
         'Password'=$website.PublishingPassword} 


    $publishScript = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts\default-publish.ps1" 


    . $publishScript -publishProperties $publishProperties -packOutput $packOutput 
    Start-AzureWebsite -Name $websiteName 

संसाधन:

  1. https://msdn.microsoft.com/en-us/library/azure/dn495288.aspx
  2. https://msdn.microsoft.com/en-us/library/azure/dn495185.aspx
  3. https://msdn.microsoft.com/Library/vs/alm/Build/azure/deploy-aspnet5
+0

धन्यवाद। यह एक अच्छा कामकाज है, लेकिन मैं नहीं देख सकता कि यह तैनाती नए कंपाइलर का लाभ क्यों नहीं लेती है और इसे पुनरारंभ किए बिना एप्लिकेशन को रीफ्रेश करें .. :( – iberodev

+1

मुझे यकीन नहीं है कि रोज़लिन के पास इसके साथ बहुत कुछ करना है। Roslyn के साथ हम काम करते समय फ़ाइल आधारित डीएलएस के बजाए कलाकृतियों को संकलित कर रहे हैं। यहां निर्माण कलाकृतियों के निर्माण के रूप में डीएलएस बना रहा है और फिर उन्हें अज़ूर तक पहुंचा रहा है। मेरा मानना ​​है कि स्थानीय रूप से ऐप पूल को फिर से रीसाइक्लिंग किया जा रहा है जब कोड परिवर्तन किया जाता है वैसे भी। मुद्दा यह है कि लोडर लॉक हो गया है और वेबसाइट को रोककर हम इसे जाने के लिए मजबूर करते हैं। आशा है कि यह समझ में आता है? इसके अलावा यह भी सही है :) –

+0

बढ़िया, यह समझ में आता है। – iberodev

संबंधित मुद्दे