मेरे संकलित एज़ूर फ़ंक्शन को डीएलएल द्वारा बुलाए गए डीएलएल में एक विधि नहीं मिल रही है, मेरे फ़ंक्शन कॉल।

Microsoft.Azure.WebJobs.Host.FunctionInvocationException : Exception while executing function: Functions.CompiledTrigger 
    ---> System.AggregateException : One or more errors occurred. 
    ---> Method not found: 'Void MBrace.FsPickler.BinarySerializer..ctor(Microsoft.FSharp.Core.FSharpOption`1<Boolean>, Microsoft.FSharp.Core.FSharpOption`1<MBrace.FsPickler.ITypeNameConverter>, Microsoft.FSharp.Core.FSharpOption`1<MBrace.FsPickler.IPicklerResolver>)'.

   at Microsoft.Azure.WebJobs.Script.Description.DotNetFunctionInvoker.GetTaskResult(Task task) 
   at C:\projects\azure-webjobs-sdk-script\src\WebJobs.Script\Description\DotNet\DotNetFunctionInvoker.cs : 453

   at Microsoft.Azure.WebJobs.Script.Description.DotNetFunctionInvoker.<>c.<InvokeCore>b__26_0(Task t) 
   at C:\projects\azure-webjobs-sdk-script\src\WebJobs.Script\Description\DotNet\DotNetFunctionInvoker.cs : 276

   at System.Threading.Tasks.ContinuationResultTaskFromTask`1.InnerInvoke()

   at System.Threading.Tasks.Task.Execute()

   ...

सभी आवश्यक डीएलएल मौजूद हैं। विधि मौजूद है। और मैंने उप डीएलएल के लिए भी एक खुला बयान जोड़ा।

कोड:

module Trigger

open System
open Microsoft.Azure.WebJobs
open Microsoft.Azure.WebJobs.Host
open Microsoft.Azure.WebJobs.Extensions
open PSlogger             //this DLL is called            
open MBrace.FsPickler     //which calls this DLL


let logMessage (initLog : CountingLog) connString curretnProcess message addlInfo  =

    // fails inside this call, whether I use the async or non-async function
    //IO.insertAsync connString {initLog.Log with 
    IO.insert connString {initLog.Log with 
                                UtcTime = DateTime.UtcNow;
                                Process = curretnProcess
                                Message = message
                                StringInfo = addlInfo
                                } "MyLogPrefix"

let Run(myTimer: TimerInfo, log: TraceWriter ) =
    async {
        ...

        logMessage logger connString None "starting run" None |> ignore

        ...

    } |> Async.StartAsTask
2
Jack Fox 20 नवम्बर 2017, 02:21

2 जवाब

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

समस्या यह है कि Azure फ़ंक्शन FsPickler.dll का समर्थन नहीं कर सकता, क्योंकि या तो DLL .NET Framework 4.5 के लिए बनाया गया है, या क्योंकि System.Tuple FsPickler के नीचे बदल गया है। चर्चा यहां देखें

1
Jack Fox 27 नवम्बर 2017, 02:48

हम्म। ऐसा लगता है कि एक परिनियोजन समस्या है जिसमें MBrace.FsPickler असेंबली उपलब्ध नहीं है। मैं आपको पोस्ट में जानता हूं, लेकिन क्या आप 100% सुनिश्चित हैं कि असेंबली फ़ंक्शन असेंबली के समान फ़ोल्डर में है?

क्या यह स्थानीय रूप से कार्य रनटाइम/डीबगर पर चलता है? आप एफ # का कौन सा संस्करण चला रहे हैं?

1
Isaac Abraham 20 नवम्बर 2017, 14:50