c# - 在 azure 函数中反序列化来自服务总线的代理消息时出现异常
问题描述
我正在尝试创建一个简单的 azure 函数来监听我的服务总线主题:
var test = new PhotoStatsChange();//OK
var entity = message.GetBody<PhotoStatsChange>(new NetDataContractSerializer());//Exception here
无法加载文件或程序集“PhotoManager.Domain,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。
PhotoManager.Domain
是定义的程序集PhotoStatsChange
。但是我完全被错误信息弄糊涂了(没有内部异常):如果在上面的行中使用它,如何找不到程序集?
实际上PhotoManager.Domain.dll
存在于/bin/Debug/net461/bin
文件夹中。
代理消息文本:
<?xml version="1.0" encoding="UTF-8"?>
<PhotoStatsChange
xmlns="http://schemas.datacontract.org/2004/07/PhotoManager.Domain.Caching"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"
z:Id="1"
z:Type="PhotoManager.Domain.Caching.PhotoStatsChange"
z:Assembly="PhotoManager.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<CacheRebuilt>false</CacheRebuilt>
<InstanceNum z:Id="2">IN_0</InstanceNum>
</PhotoStatsChange>
更新
我用程序集创建了一个简单的示例,它包含一个 POCO 类并且没有任何外部依赖项(只有那些默认添加的依赖项,例如System
等System.Data
)。即使在这种情况下,我也有同样的例外。
一些笔记
- 设置
Copy Local
没有帮助 Microsoft.ServiceBus.Messaging.DataContractBinarySerializer
使用默认序列化程序( )时不存在该问题
NetDataContractSerializer
因此,在 Azure Functions 中使用时似乎存在问题。
解决方案
推荐阅读
- android - 如何通过 Flutter 使用 Dropbox 进行身份验证、创建、读取和更新文件夹
- php - 调节从表中选择
- javascript - d3.js 示例代码中的“图表”如何工作?
- android - 使用颤振以不同方向点击屏幕时获得相同的 (x,y)
- c++ - unordered_map 无法在工作 C++ 中初始化?
- fetch - JS FetchAPI Get Request 添加原始正文数据
- python - Colab 上的 Selenium(宽度)的 TikTokApi 问题
- python - Python:捕获并保存函数输出
- bash - 比较 major.minor.release 版本号的次要部分
- salesforce - 社交客户服务:自定义 ApexClass(入站设置)中的 Apex 休息标注