在Azure函数中反序列化来自服务总线的代理消息时发生异常

时间:2018-10-09 13:04:41

标签: c# .net azure azure-functions

我正在尝试创建一个简单的azure函数,它将监听我的服务总线主题:

var test = new PhotoStatsChange();//OK
var entity = message.GetBody<PhotoStatsChange>(new NetDataContractSerializer());//Exception here
  

无法加载文件或程序集'PhotoManager.Domain,版本= 1.0.0.0,   文化=中性,PublicKeyToken =空”或其依赖项之一。的   系统找不到指定的文件。

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类,并且没有任何外部依赖项(仅包含默认添加的那些依赖项,例如SystemSystem.Data等)。 即使在这种情况下,我也有相同的例外。

一些笔记

  • 设置Copy Local无济于事
  • 使用默认序列化器(Microsoft.ServiceBus.Messaging.DataContractBinarySerializer)时不存在此问题

因此,在Azure Functions中使用NetDataContractSerializer时似乎出现了问题。

0 个答案:

没有答案