विजुअल स्टूडियो 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
      }
    }
  }
}

यहाँ निर्भरताएँ हैं:

Dependencies

मैंने निम्नलिखित की कोशिश की है:

  1. विजुअल स्टूडियो की मरम्मत।
  2. प्रकाशन सेटिंग में दूरस्थ Azure फ़ंक्शन जोड़ना।
  3. func host json के साथ-साथ VS17 में डिबगिंग के माध्यम से चल रहा है।

मैंने अन्य 6 समान प्रश्न पढ़े हैं लेकिन समाधान उपयोगी नहीं मिला।

कृपया इसे ठीक करने में मेरी मदद करें।

0
dragos 6 अगस्त 2020, 16:16

1 उत्तर

सबसे बढ़िया उत्तर

इस समस्या के लिए, मैं कुछ ऐसे ही प्रश्नों से गुज़रा। उनमें से ज्यादातर VS2017 में और पैकेज WindowsAzure.Storage के साथ बनाए गए हैं। आपके द्वारा प्रदान किए गए स्क्रीनशॉट के अनुसार, मुझे पता है कि आपने इस पैकेज को स्थापित नहीं किया है, लेकिन मेरा सुझाव है कि आप अपने विजुअल स्टूडियो को 2017 से 2019 तक अपडेट करें क्योंकि VS2019 हमारे लिए नीला फ़ंक्शन विकसित करने के लिए अधिक उपयुक्त है (और शायद इसमें कुछ अंतर हैं " स्टोरेज एमुलेटर" VS2017 और VS2019 के बीच)।

विजुअल स्टूडियो को 2019 में अपडेट करने के बाद, कृपया इसमें बिना किसी अन्य पैकेज के एक नया फंक्शन ऐप बनाएं। मैंने देखा कि आपके स्क्रीनशॉट में कुछ अन्य पैकेज हैं जैसे "azure keyvault"। फिर ऊपर दिए गए कोड को अपने नए फ़ंक्शन में कॉपी करें और पैकेजों को एक-एक करके इंस्टॉल करें।

आपके संदर्भ के लिए नीचे मेरे कार्य का विवरण प्रदान करें। मैंने इसे वीएस2019 में बनाया है और यह ठीक काम करता है।

फ़ंक्शन कोड और स्थापित पैकेज:

enter image description here

स्थानीय.सेटिंग्स.जेसन

{
    "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

enter image description here

1
Hury Shen 7 अगस्त 2020, 06:17