C# Azure功能“;找不到程序集“;
我一直在为Azure功能试用新的Visual Studio 2017工具,但遇到了一个问题 在Azure函数中尝试初始化Nuget包PowerOfficeGoSDK中的类时,我遇到一个SerializationException: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
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也发生在vargoApi=newgo(authorizationSettings)
行上。这意味着你想初始化Go,但授权设置的ApplicationKey或ClientKey无效。由于你不能共享你的密钥,我的建议是,你可以使用我的代码和正确的密钥来创建一个新函数,以检查它是否工作。现在这样做了,它在第一次运行时就工作了。但在之后的每一次跑步中,我都会遇到同样的例外。它甚至在第一次跑步时都不起作用,只是通常。我所说的第一次运行是指从功能应用程序中删除该功能,将其再次发布到Azure,并在发布后单击第一次“运行”。第一次运行非常奇怪。请尝试在本地调试它,以检查它是否正常工作。