首页 文章

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

提问于
浏览
17

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

问题实际上在 Headers 中: how do I report a bug with Service Bus?
(不是Azure版本,而是您在本地安装的版本)

以下是问题所在:

  • Microsoft.Cloud.ServiceBus.dll 引用 Microsoft.Cloud.Common.AzureStorage.dll . 它使用该程序集中的一种类型 - 即 StorageAccountInfo . 它是配置部分(即 NamespacePolicyDataStoreFactorySection.Parameters.BlobStorageAccountInfo )的一部分,但显然只在Azure环境中有意义,并且从未在内部部署场景中使用过 .

  • 但是这里有一个问题: Microsoft.Cloud.Common.AzureStorage.dll 实际上并没有附带Service Bus 1.1 . 我试图在各种SDK和Azure工具包,样本和诸如此类(我有很多)以及在线等方面找到它 - 并找到有关该DLL的zippo信息或从何处获取它 . This是我发现它的唯一地方 .

  • 尽管本身就是一个WTF,但DLL的缺失并没有真正阻止任何工作:在内部部署场景中,任何代码都没有触及该类型,因此没有任何抱怨 .

  • 但这是第二个问题: mscorlib.dll v4.6.7.0(与VS2015 CTP5一起提供)与之前的版本相比略有变化,4.0.30319.34014, - 在 System.Attribute.InternalGetCustomAttributes(PropertyInfo,Type,bool) ,更准确地说是this line . 该行在 mscorlib 的上一版本中不存在,一切都很好 . 但现在它确实存在,导致属性类型被触及,这导致加载DLL失败,因为DLL不存在 .

  • 所以整个过程从加载配置部分 NamespacePolicyDataStoreFactorySection 开始,其工作方式如下:


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)

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

  • 从配置中删除配置部分 . 不幸的是,服务总线在这方面不是很容错的:当部分不存在时,NRE失败 . 也不可能提供备用配置部分"handler",因为在.NET配置系统"handler"和"data"是相同的事情 .

  • 提供所需类型的假DLL . 不能这样做,因为一切都是强烈命名的 .

  • 在某处找到丢失的DLL . 试过并失败了 . 网上没有提到DLL,更不用说比特了 .

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

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

3 回答

  • 3

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

    • 使用版本2.1.0.0创建了伪装配Microsoft.Cloud.Common.AzureStorage.dll,并使用新的密钥文件对其进行了签名 .

    • 使用以下命令对其进行反汇编:ildasm / all /out=azurestorage.il Microsoft.Cloud.Common.AzureStorage.dll

    • 通过ildasm / Tp Microsoft.Cloud.Common.Diagnostics.dll从位于服务总线文件夹中的另一个Microsoft.Cloud . *程序集中提取公钥和公钥令牌

    • 在文本编辑器中打开azurestorage.il,并将公钥令牌和公钥更改为上一步中提取的公钥和公钥

    • 重新组装了il文件:ilasm / dll azurestorage.il /out=Microsoft.Cloud.Common.AzureStorage.dll

    • 使用以下命令注册程序集以进行签名验证:sn -Vr Microsoft.Cloud.Common.AzureStorage.dll

    • 将生成的程序集安装到GAC:gacutil / i Microsoft.Cloud.Common.AzureStorage.dll

    它终于奏效了 . 希望这可以帮助任何陷入这个问题的人 .

  • -2

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

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

  • 19

    据我了解你需要向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步:制作您的 Profiles .


    i.stack.imgur.com/PVqXi.png

    第4步:点击反馈 .


    i.stack.imgur.com/nL5Kr.png

    第5步:在页面末尾的文本框中写下错误 Headers .


    i.stack.imgur.com/gEOJG.png

    第6步:然后点击 submit feedback


    i.stack.imgur.com/MQgV0.png

    第7步:现在您可以编写问题并告诉Microsoft有关此错误的信息 .

相关问题