विजुअल स्टूडियो 2017 v15.9.25.
एज़्योर फंक्शन v2.
मेरा रन फ़ंक्शन यहां है:
public static async Task Run(
[TimerTrigger("0 */2 * * *")]TimerInfo myTimer,
ILogger log,
[Blob("BlobContainer/blob.json", FileAccess.ReadWrite, Connection = "AzureWebJobsStorage")] CloudBlockBlob stateStore,
ExecutionContext context)
{
जब मैं वीएस में स्थानीय रूप से फ़ंक्शन बनाता हूं, तो function.json
में ब्लॉब स्टोरेज के लिए बाध्यकारी नहीं होता है।
इसलिए, जब मैं इसे स्थानीय रूप से चलाने का प्रयास करता हूं, तो यह निम्न त्रुटि देता है:
The 'AzureFunctionApp' function is in error:
Microsoft.Azure.WebJobs.Host: Error indexing method 'AzureFunctionApp'.
Microsoft.Azure.WebJobs.Host: Can't bind Blob to type 'Microsoft.Azure.Storage.Blob.CloudBlockBlob'.
यह host.json
है:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingExcludedTypes": "Request",
"samplingSettings": {
"isEnabled": true
}
}
}
}
यहाँ निर्भरताएँ हैं:
मैंने निम्नलिखित की कोशिश की है:
- विजुअल स्टूडियो की मरम्मत।
- प्रकाशन सेटिंग में दूरस्थ Azure फ़ंक्शन जोड़ना।
func host json
के साथ-साथ VS17 में डिबगिंग के माध्यम से चल रहा है।
मैंने अन्य 6 समान प्रश्न पढ़े हैं लेकिन समाधान उपयोगी नहीं मिला।
कृपया इसे ठीक करने में मेरी मदद करें।
1 उत्तर
इस समस्या के लिए, मैं कुछ ऐसे ही प्रश्नों से गुज़रा। उनमें से ज्यादातर VS2017 में और पैकेज WindowsAzure.Storage
के साथ बनाए गए हैं। आपके द्वारा प्रदान किए गए स्क्रीनशॉट के अनुसार, मुझे पता है कि आपने इस पैकेज को स्थापित नहीं किया है, लेकिन मेरा सुझाव है कि आप अपने विजुअल स्टूडियो को 2017 से 2019 तक अपडेट करें क्योंकि VS2019 हमारे लिए नीला फ़ंक्शन विकसित करने के लिए अधिक उपयुक्त है (और शायद इसमें कुछ अंतर हैं " स्टोरेज एमुलेटर" VS2017 और VS2019 के बीच)।
विजुअल स्टूडियो को 2019 में अपडेट करने के बाद, कृपया इसमें बिना किसी अन्य पैकेज के एक नया फंक्शन ऐप बनाएं। मैंने देखा कि आपके स्क्रीनशॉट में कुछ अन्य पैकेज हैं जैसे "azure keyvault"। फिर ऊपर दिए गए कोड को अपने नए फ़ंक्शन में कॉपी करें और पैकेजों को एक-एक करके इंस्टॉल करें।
आपके संदर्भ के लिए नीचे मेरे कार्य का विवरण प्रदान करें। मैंने इसे वीएस2019 में बनाया है और यह ठीक काम करता है।
फ़ंक्शन कोड और स्थापित पैकेज:
स्थानीय.सेटिंग्स.जेसन
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
}
}
Csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="4.0.2" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.31" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>
वैसे, मेरे function.json
में ब्लॉब स्टोरेज के बारे में बाध्यकारी भी नहीं है। इसलिए मुझे लगता है कि इसका आपकी समस्या से कोई लेना-देना नहीं है।
समारोह.जेसन
{
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.31",
"configurationSource": "attributes",
"bindings": [
{
"type": "timerTrigger",
"schedule": "*/30 * * * * *",
"useMonitor": true,
"runOnStartup": false,
"name": "myTimer"
}
],
"disabled": false,
"scriptFile": "../bin/FunctionAppV2.dll",
"entryPoint": "FunctionAppV2.Function1.Run"
}
===========================अपडेट करें=========== =============
मैंने आपकी समस्या का पुनरुत्पादन किया, यह गलत पैकेज का उपयोग करने के कारण हो सकता है।
हालांकि आपके इंस्टॉल किए गए पैकेज के स्क्रीनशॉट में कोई पैकेज WindowsAzure.Storage
नहीं है। लेकिन इस पैकेज को स्थापित करने की आवश्यकता नहीं है, इसे सीधे फ़ंक्शन में उपयोग किया जा सकता है।
मेरे फ़ंक्शन कोड में, यदि मैं using Microsoft.WindowsAzure.Storage.Blob
नीचे दिखाए गए स्क्रीनशॉट के रूप में, तो यह आपके जैसा ही त्रुटि संदेश दिखाएगा। तो कृपया using Microsoft.Azure.Storage.Blob
के लिए CloudBlockBlob
।
संबंधित सवाल
नए सवाल
visual-studio
यदि आप Visual Studio सुविधाओं और कार्यक्षमता के बारे में कोई विशिष्ट प्रश्न पूछना चाहते हैं तो इस टैग का उपयोग करें। इस टैग का उपयोग कोड के बारे में उन सवालों पर न करें जो केवल विजुअल स्टूडियो में लिखे गए थे। अपने प्रश्न लिंक के सटीक प्रौद्योगिकी क्षेत्र को टैग करने और विज़ुअल स्टूडियो के अधिक विशिष्ट संस्करण को टैग करने पर भी विचार करें। कृपया अपने प्रश्न में अपने सटीक VS संस्करण, संस्करण और अद्यतन स्तर का उल्लेख करें।