Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure功能“;找不到程序集“;_C#_.net_Azure_Nuget_Azure Functions - Fatal编程技术网

C# Azure功能“;找不到程序集“;

C# Azure功能“;找不到程序集“;,c#,.net,azure,nuget,azure-functions,C#,.net,Azure,Nuget,Azure Functions,我一直在为Azure功能试用新的Visual Studio 2017工具,但遇到了一个问题 在Azure函数中尝试初始化Nuget包PowerOfficeGoSDK中的类时,我遇到一个SerializationException: var authorizationSettings = new AuthorizationSettings { ApplicationKey = applicationKeyGuid, ClientKey = clientKeyGuid, To

我一直在为Azure功能试用新的Visual Studio 2017工具,但遇到了一个问题

在Azure函数中尝试初始化Nuget包PowerOfficeGoSDK中的类时,我遇到一个SerializationException:

var authorizationSettings = new AuthorizationSettings
{
    ApplicationKey = applicationKeyGuid,
    ClientKey = clientKeyGuid,
    TokenStore = new BasicTokenStore("my.tokenstore")
};

var goApi = new Go(authorizationSettings);
System.Runtime.Serialization.SerializationException:找不到程序集'GoApi,版本=1.5.1.0,区域性=neutral,PublicKeyToken=null'

该代码使用各种其他Nuget软件包,如Microsoft.Azure.KeyVault,没有任何问题。我已经使用Kudu检查了函数的bin文件夹,GoApi.dll文件就在那里


有人知道是什么导致了异常吗?

我不熟悉PowerOfficeGoSDK,但根据我的测试,PowerOfficeGoSDK可以加载到Azure函数中。如果可能,请尝试重新发布或创建一个新的功能应用程序以再次测试

以下是我的详细步骤:

1.使用Visual studio 2017创建新的Azure功能项目

2.根据PowerOfficeGoSDK依赖项,我们需要将newtonsoft.json和Microsoft.Data.Edm更新为以下版本

Microsoft.Data.Edm (>= 5.8.2) 
Newtonsoft.Json (>= 10.0.2) 
注意:关于在Azure函数中使用Newtonsoft.Json版本10+

3.添加timetrigger函数,并在local.settings.json文件中配置存储连接字符串

[FunctionName("AzureFunction")]
public static void Run([TimerTrigger("0 */2 * * * *")]TimerInfo myTimer, TraceWriter log)
{
    log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
    try
      {
         var authorizationSettings = new AuthorizationSettings
         {
            ApplicationKey = Guid.NewGuid().ToString(), //I have no application key
            ClientKey = Guid.NewGuid().ToString(), //I have no client key
            TokenStore = new BasicTokenStore("my.tokenstore")
          };
          var goApi = new Go(authorizationSettings);
        }
        catch (Exception e)
        {
           log.Info($"Exception:{e.Message}"); 
        }

        log.Info($"C# Timer trigger function Finished at: {DateTime.Now}");
}
4.使用Visual Studio将其发布到Azure,并从Azure门户检查结果

注意:我没有应用程序和客户端密钥,因此我得到异常无效的ApplicationKey或ClientKey,这与预期的一样


您可以在您的计算机上共享
func.exe
的日志吗?它将有助于显示程序集的查找位置以及未找到的原因。此外,如果您可以共享一个简单的复制(最好是在GitHub上),我们可以仔细查看您的特定设置。Repo:但是我无法共享PowerOfficeGoSDK的任何API密钥。还将融合日志上载到GitHub存储库。我现在尝试从头开始构建它,但仍然得到相同的异常。它发生在“var goApi=new Go(authorizationSettings);”行上,而不是之前的行。根据异常
System.Runtime.Serialization.SerializationException:找不到程序集“goApi,Version=1.5.1.0,Culture=neutral,PublicKeyToken=null”
。似乎GoApi无法加载到Azure上。但根据我的测试,它似乎加载得很好。测试中的Execption也发生在var
goApi=newgo(authorizationSettings)
行上。这意味着你想初始化Go,但授权设置的ApplicationKey或ClientKey无效。由于你不能共享你的密钥,我的建议是,你可以使用我的代码和正确的密钥来创建一个新函数,以检查它是否工作。现在这样做了,它在第一次运行时就工作了。但在之后的每一次跑步中,我都会遇到同样的例外。它甚至在第一次跑步时都不起作用,只是通常。我所说的第一次运行是指从功能应用程序中删除该功能,将其再次发布到Azure,并在发布后单击第一次“运行”。第一次运行非常奇怪。请尝试在本地调试它,以检查它是否正常工作。