如何报告Windows Server Service Bus中的错误?

时间:2015-02-04 22:46:16

标签: azure .net-core azureservicebus servicebus mscorlib

我试着去谷歌。 Microsoft Connect不接受Service Bus的错误。 Azure门户发送到MS论坛或StackOverflow - 所以我在这里。

问题实际上在标题中:如何报告服务总线的错误?
(不是Azure版本,而是您在本地安装的版本)

以下是问题:

  1. Microsoft.Cloud.ServiceBus.dll引用Microsoft.Cloud.Common.AzureStorage.dll。它使用该程序集中的一种类型 - 即StorageAccountInfo。它是配置部分(即NamespacePolicyDataStoreFactorySection.Parameters.BlobStorageAccountInfo)的一部分,但显然仅在Azure环境中有意义,并且从未在内部部署场景中使用过。
  2. 但是这里有一个问题:Microsoft.Cloud.Common.AzureStorage.dll实际上并没有附带Service Bus 1.1。我试图在各种SDK和Azure工具包,样本和诸如此类(我有很多)以及在线等方面找到它 - 并找到有关该DLL的zippo信息或从何处获取它。 This是我发现它的唯一地方。
  3. 尽管它本身就是一个WTF,但DLL的缺失并没有真正阻止任何工作:实际情况下任何代码都没有触及该类型,所以没有投诉。
  4. 但这是第二个问题:mscorlib.dll v4.6.7.0(与VS2015 CTP5一起提供)与之前的版本4.0.30319.34014相比略有变化,在System.Attribute.InternalGetCustomAttributes(PropertyInfo,Type,bool)中更精确,this line。在mscorlib的先前版本中不存在该行,一切都很好。但现在它确实存在,导致属性类型被触摸,这导致加载DLL失败,因为DLL不存在。
  5. 因此,整个过程从加载配置部分NamespacePolicyDataStoreFactorySection开始,其工作方式如下:

  6.   ConfigurationManager.GetSection -> 
      ... -> 
      BaseConfigurationRecord.GetSectionRecursive -> 
      ... -> 
      BaseConfigurationRecord.CallCreateSection -> 
      MgmtConfigurationRecord.CreateSection -> 
      ConfigurationElement.Reset -> 
      ConfigurationElement.get_Properties -> 
      ConfigurationElement.PropertiesFromType -> 
      ConfigurationElement.CreatePropertyBagFromType -> 
      Attribute.GetCustomAttribute (for property BlobStorageAccountInfo of type StorageAccountInfo) ->
      ... ->
      Attribute.InternalGetCustomAttributes(PropertyInfo) ->
      Attributes.GetIndexParameterTypes ->
      RuntimePropertyInfo.GetIndexParameters ->
      ... ->
      RuntimeMethodInfo.GetParameters ->
      ... ->
      kaboom! (touches the return type, tries to load DLL containing it, fails)
    

    某些(徒劳)尝试解决方法

    1. 从配置中删除配置部分。不幸的是,服务总线在这方面不是很容错的:当部分不存在时,NRE失败。也不可能提供替代配置部分“处理程序”,因为在.NET配置系统中“处理程序”和“数据”是相同的。
    2. 提供所需类型的假DLL。不能这样做,因为一切都被强烈命名。
    3. 在某处找到丢失的DLL。试过并失败了。网上没有提到DLL,更不用说这些了。<​​/ li>

      细心的读者可能会问:哇,等一下! VS2015 CTP5?!你是说你在工作机器上安装了预发布软件?!那么,当然它不起作用,你期待什么?这将教你成为早期采用者! 细心的读者绝对是正确的:完全是我的错,我知道潜在的危险,无论如何我做了,为我服务。

      但这不是重点。我安装预发布软件不会降低引用DLL的WTFness,但不会降低它的运输速度。虽然我个人会很好,但我只是想确保在.NET 5发布并点击Windows Update时突然停止工作。

3 个答案:

答案 0 :(得分:19)

我知道这个问题的答案很晚,实际上并不是问题的答案,但今天,在使用Windows Service Bus 1.1的PC上安装VS 2015 RC并重新启动PC后,我的服务总线网关服务停止工作,我经历了这个问题中描述的所有痛苦,但最终可以从假装配场景中解决。这是解决方案:

  1. 使用版本2.1.0.0创建了伪装配Microsoft.Cloud.Common.AzureStorage.dll,并使用新的密钥文件对其进行了签名。
  2. 使用以下命令对其进行反汇编:ildasm / all /out=azurestorage.il Microsoft.Cloud.Common.AzureStorage.dll
  3. 通过ildasm / Tp Microsoft.Cloud.Common.Diagnostics.dll
  4. 从位于服务总线文件夹中的另一个Microsoft.Cloud。*程序集中提取公钥和公钥令牌。
  5. 在文本编辑器中打开azurestorage.il,并使用上一步中提取的公钥和公钥更改公钥标记和公钥
  6. 重新组合il文件:ilasm / dll azurestorage.il /out=Microsoft.Cloud.Common.AzureStorage.dll
  7. 使用以下命令注册程序集以进行签名验证:sn -Vr Microsoft.Cloud.Common.AzureStorage.dll
  8. 将生成的程序集安装到GAC:gacutil / i Microsoft.Cloud.Common.AzureStorage.dll
  9. 它终于奏效了。希望这可以帮助任何陷入这个问题的人。

答案 1 :(得分:3)

正如Jafin在this answer中所给出的,幸运的是,Microsoft发布的10/23/2015正式解决了.NET 4.6的问题。

在此处下载:Update for Service Bus Server 1.1 (KB3086798)

答案 2 :(得分:-2)

据我所知,您需要向Microsoft报告错误,我发现您需要向Microsoft报告错误。很高兴知道微软将会报告错误的用户。

根据微软的回答,您可以在此处报告Microsfot错误:https://connect.microsoft.com/

注意:您必须拥有一个微软帐户,您可以在 hotmail.com

我知道有些微软产品不像outlook.com

首先转到https://connect.microsoft.com/


逐步

i.stack.imgur.com/CewDL.png

步骤1:在程序中编写您想要报告错误的程序,然后单击“加入”。


i.stack.imgur.com/pJbQY.png

第2步:点击继续。


i.stack.imgur.com/cCgXq.png

第3步:制作个人资料。


i.stack.imgur.com/PVqXi.png

第4步:点击反馈。


i.stack.imgur.com/nL5Kr.png

步骤5:在页面末尾的文本框中写下错误标题。


i.stack.imgur.com/gEOJG.png

第6步:然后点击提交反馈


i.stack.imgur.com/MQgV0.png

步骤7:现在您可以编写问题并告诉Microsoft有关此错误。