我正在尝试将Microsoft.AspNetCore.Authentication.Facebook与Azure函数项目一起使用。我创建了一个完全干净的.net核心3.1 Azure Function项目,仅具有以下依赖关系:
Microsoft.NET.Sdk.Functions 3.0.7
Microsoft.Azure.Functions.Extensions 1.0.0
Microsoft.AspNetCore.Authentication.Facebook 3.1.5
在启动文件中,我有以下代码:
public override void Configure(IFunctionsHostBuilder builder)
{
facebookOptions.AppId = Environment.GetEnvironmentVariable("Authentication:Facebook:AppId");
facebookOptions.AppSecret = Environment.GetEnvironmentVariable("Authentication:Facebook:AppSecret");
});
运行应用程序时,在控制台窗口中出现以下错误:
> A host error has occurred during startup operation Could not load file
> or assembly 'Microsoft.AspNetCore.Authentication.Facebook,
> Version=3.1.5.0, Culture=neutral, PublicKeyToken='. The system cannot
> find the file specified.
有什么想法吗?
答案 0 :(得分:1)
添加用户密钥库后,调试停止了工作,因此我花了一些时间安装不同版本的Azure Functions sdk。
这可能仅发生在我的项目中,但我决定共享试验和错误摘要,因为这确实很耗时,以防万一其他人也会遇到相同的问题。
Microsoft.NET.SDK.Functions version 3.0.5 - 3.0.7
Resulted in the host error has occurred during startup operation Could not load file
Microsoft.NET.SDK.Functions version 3.0.4
Resulted in FunctionsStartup not being called and debugging not triggering
Microsoft.NET.SDK.Functions version 3.0.3
Seems to be working with debugging and no error messages
3.0.3版目前似乎可以调试并且没有主机错误。因此,我暂时坚持使用此版本,希望它将在将来的版本中解决。
这是我在解决方案中的依赖项。
答案 1 :(得分:0)
有两种故障排除方法:
1。在配置文件中添加绑定重定向元素。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.AspNetCore.Authentication.Facebook" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="3.1.4" newVersion="3.1.5" />
</dependentAssembly>
</assemblyBinding>
</runtime>
这指定要使用的程序集版本,而不是旧版本。不一定需要在newVersion中指定更高版本,也可以在newVersion中提供更早版本。
2。更新NuGet程序包
在所有根项目中更新NuGet程序包,然后在引用相同程序包的后续引用项目(如果需要)中更新。
有关更多详细信息,您可以参考此article。