2016-06-29 10 views
6

मैं सेवा फैब्रिक एप्लिकेशन को शक्ति के साथ Azure में प्रकाशित करने का प्रयास कर रहा हूं। मैं क्लस्टर से कनेक्ट करना चाहता हूं और फिर स्क्रिप्ट "डिप्लॉय-फैब्रिक एप्प्लिकेशन.पीएस 1" (जिसे उत्पन्न किया जाता है जब विज़ुअल स्टूडियो में नई प्रोजेक्ट बनाई जाती है)शक्तियों से सेवा फैब्रिक को तैनात करें। त्रुटि -> Get-ServiceFabricClusterManifest: क्लस्टर कनेक्शन उदाहरण शून्य है

ऐसा करने के लिए मैंने नई स्क्रिप्ट फ़ाइल बनाई है जो कनेक्ट करने के लिए ज़िम्मेदार है क्लस्टर के साथ और फिर उसी स्क्रिप्ट फ़ाइल से मैं "तैनाती-फैब्रिक एप्प्लिकेशन.पीएस 1" कह रहा हूं।

मेरी स्क्रिप्ट शुरू करने के बाद मैं निम्न त्रुटि हो रही है:

Get-ServiceFabricClusterManifest : Cluster connection instance is null 
At C:\Program Files\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK\Publish-UpgradedServiceFabricApplication.ps1:116 char:28 
+  $clusterManifestText = Get-ServiceFabricClusterManifest 
+       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : ResourceUnavailable: (:) [Get-ServiceFabricClusterManifest], NullReferenceException 
+ FullyQualifiedErrorId : GetClusterConnectionErrorId,Microsoft.ServiceFabric.Powershell.GetClusterManifest 

कनेक्शन स्क्रिप्ट और तैनात-FabricApplication.ps1 मैं बोल रहा हूँ "टेस्ट-ServiceFabricClusterConnection" और दोनों लिपियों में यह दोनों लिपियों में यह सच भी रिटर्न में मैं मैं "Get-ServiceFabricClusterManifest" को कॉल कर रहा हूं और दोनों स्थितियों में यह मेरे सामने प्रकट होता है लेकिन जब मैंने "प्रकाशित-सेवा फ़ैब्रिकक्लस्टर कनेक्शन" को "प्रकाशित-अपग्रेड किया गया सेवाफैब्रिक एप्प्लिकेशन.पीएस 1" में जोड़ा है, तो उसने उसी त्रुटि को उल्लिखित किया है, लेकिन "टेस्ट-सर्विसफैब्रिक क्लस्टर कनेक्शन" "कॉल करें।

जोड़ने स्क्रिप्ट के लिए कोड:

Param 
(
    [String] 
    $PublishProfileFile, 

    [String] 
    $ApplicationPackagePath, 

    [Switch] 
    $DeployOnly, 

    [Boolean] 
    $UnregisterUnusedApplicationVersionsAfterUpgrade, 

    [String] 
    [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')] 
    $OverrideUpgradeBehavior = 'None', 

    [String] 
    [ValidateSet('Never','Always','SameAppTypeAndVersion')] 
    $OverwriteBehavior = 'Never', 

    [Switch] 
    $SkipPackageValidation, 

    [String] 
    $ConnectionEndpoint, 

    [String] 
    $ServerCertThumbprint, 

    [String] 
    $FindType, 

    [String] 
    $FindValue, 

    [String] 
    $StoreLocation, 

    [String] 
    $StoreName 
) 

$connectArgs = @{ ConnectionEndpoint = $ConnectionEndpoint; X509Credential = $True; StoreLocation = $StoreLocation; StoreName = $StoreName; ServerCertThumbprint = $ServerCertThumbprint; FindType = $FindType; FindValue = $FindValue } 

try 
{ 
    Connect-ServiceFabricCluster @connectArgs; 
    $connection = Get-ServiceFabricClusterConnection; 
    Write-Host $connection; 
    $m = Get-ServiceFabricClusterManifest 
    Write-Host $m; 
} 
catch [System.Fabric.FabricObjectClosedException] 
{ 
    Write-Warning "Service Fabric cluster may not be connected." 
    throw 
} 

.\Deploy-FabricApplication.ps1 -PublishProfileFile $PublishProfileFile -ApplicationPackagePath $ApplicationPackagePath -OverrideUpgradeBehavior $OverrideUpgradeBehavior -OverwriteBehavior $OverwriteBehavior -DeployOnly:$DeployOnly -UnregisterUnusedApplicationVersionsAfterUpgrade:$UnregisterUnusedApplicationVersionsAfterUpgrade -UseExistingClusterConnection:$true -SkipPackageValidation:$SkipPackageValidation 

संक्षेप में, मैं पता नहीं का समूह बनाने और उसके बाद तैनात-FabricApplication.ps1 में इसका इस्तेमाल

मदद के लिए धन्यवाद कनेक्शन स्थापित करने के लिए कैसे है

उत्तर

11

Connect-ServiceFabricCluster पर कॉल करते समय स्थानीय $clusterConnection चर सेट किया गया है। एसडीके स्क्रिप्ट्स में से कुछ तो उस चर को सेट करने की अपेक्षा करते हैं, लेकिन क्योंकि आप अपनी स्क्रिप्ट को विभिन्न दायरे में निष्पादित कर रहे हैं, तो स्थानीय चर उनके लिए उपलब्ध नहीं है।

आप या तो डॉट स्रोत तैनात-FabricApplication.ps1 कर सकते हैं कॉल करने के लिए

. .\Deploy-FabricApplication.ps1 -PublishProfileFile $PublishProfileFile -ApplicationPackagePath $ApplicationPackagePath -OverrideUpgradeBehavior $OverrideUpgradeBehavior -OverwriteBehavior $OverwriteBehavior -DeployOnly:$DeployOnly -UnregisterUnusedApplicationVersionsAfterUpgrade:$UnregisterUnusedApplicationVersionsAfterUpgrade -UseExistingClusterConnection:$true -SkipPackageValidation:$SkipPackageValidation 

या एक $ वैश्विक बनाने के लिए: clusterConnection चर है कि स्थानीय $ clusterConnection चर

$global:clusterConnection = $clusterConnection 
+0

मदद के लिए धन्यवाद होता है, मैं स्थानीय वैरिएबल को वैश्विक रूप से असाइन किया है और ऐसा लगता है कि अब यह – TomaszMaryniak

+0

काम करता है यदि आप अपने स्थानीय क्लस्टर को रीसेट करते हैं, और आपको प्राप्त होने वाले कनेक्शन को पुनः प्रयास करें और पुनः उपयोग करें 'त्रुटि: ... अपवाद: ऑब्जेक्ट बंद है। -> HRESULT से अपवाद: 0x80071BFE'। एक नई पावरहेल विंडो शुरू करने से यह ठीक हो जाता है। –

+0

और रीसेट के बाद 'कनेक्ट-सेवाफैब्रिकक्लस्टर' चलाना आपको मिलता है: 'कनेक्ट-सेवाफैब्रिकक्लस्टर: ऑब्जेक्ट बंद है। लाइन पर: 1 char: 1 + कनेक्ट-सर्विसफैब्रिकक्लस्टर + श्रेणीइन्फो: अमान्य ऑपरेशन: (:) [कनेक्ट-सर्विसफैब्रिकक्लस्टर], फैब्रिक ऑब्जेक्ट क्लोज़ एक्सेप्शन + फुलली क्वालिफाइड एरर आईडी: टेस्टक्लस्टरकोनक्शन एररआईडी, माइक्रोसॉफ्ट। सर्विसफैब्रिक। पावरहेल.कनेक्टक्लस्टर ' –

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