WebApplication 在第一次成功后无法找到程序集 Microsoft.ServiceBus

WebApplication unable to find assembly Microsoft.ServiceBus after first success

我们在一个使用 Microsoft 的 ServiceBus 作为队列的 MVC web 应用程序项目中。客户下订单,然后由后端系统处理,完成后通过服务总线将响应发送回 WebApp。

我们第一次触发此流程时一切正常。第二次执行流程时,WebApplication 出现以下错误:

Application ID: DefaultDomain

Process ID: 3504

Exception: System.Runtime.Serialization.SerializationException

Message: Unable to find assembly 'Microsoft.ServiceBus, Version=2.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

StackTrace:    at System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)
   at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
   at System.Runtime.Serialization.Formatters.Binary.ObjectMap.Create(String name, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Remoting.Channels.CrossAppDomainSerializer.DeserializeObject(MemoryStream stm)
   at System.AppDomain.Deserialize(Byte[] blob)
   at System.AppDomain.UnmarshalObject(Byte[] blob)

如果我们重新启动应用程序池和站点,一切都会回到原点。它第一次工作,但后来失败了。我们只有在我们即将发布的新的实时环境中才会有这种行为。一切都在本地和我们当前的生活环境中工作。所以这必须与环境有关。我们有现场环境,只有 ServiceBus 在 Azure 中。

服务总线:"WindowsAzure.ServiceBus"版本=“2.4.8.0”。我也试过 2.6.0 版本,结果相同。

新环境与旧环境的不同之处在于它是 Windows 2012 服务器而不是 2010,以及 IIS 8 而不是 IIS 7。新环境的硬件资源处于良好水平.

我们遇到了同样的问题并通过安装解决了

  • HTTP 激活
  • TCP 激活

.NET Framework 4.5 特性

此致, 弗兰克