我如何报告在Windows Server服务总线中的错误? [英] How do I report a bug in Windows Server Service Bus?

查看:357
本文介绍了我如何报告在Windows Server服务总线中的错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想谷歌。微软Connect不接受服务总线错误。 Azure的门户网站发送要么MS论坛或计算器 - 所以我在这里

真正的问题是在标题:?如何报告bug与服务总线结果
(不是Azure的版本,但在安装premises一)

这是问题:


  1. Microsoft.Cloud.ServiceBus.dll Microsoft.Cloud.Common.AzureStorage.dll 的参考。它使用一种从组装 - 即 StorageAccountInfo 。这是一个配置部分(即 NamespacePolicyDataStoreFactorySection.Parameters.BlobStorageAccountInfo )的一部分,但显然才有意义在Azure的环境,并在导通premise从未使用过场景。

  2. 但这里的渔获: Microsoft.Cloud.Common.AzureStorage.dll 实际上并没有随服务总线1.1。我试图找到它在不同的SDK和天青工具包,样品和诸如此类的东西(其中我有很多),以及在线 - 和发现有关该DLL或在哪里得到它ZIPPO信息。 <一href=\"http://blogs.msdn.com/b/mandi/archive/2014/12/02/dear-messagesender-exe-we-re-breaking-up.aspx\"相对=nofollow>这是我发现了它的一提的地方。

  3. 尽管是本身就是一个跆拳道,缺少DLL的并没有真正美元,工作p $ pvent任何信息:这类型不受任何code的导通premise方案实际触摸,所以没有投诉

  4. 但这里的第二个陷阱: mscorlib.dll中 v4.6.7.0(其中附带VS2015 CTP5)有轻微的变化相比,previous版本, 4.0.30319.34014, - 在 System.Attribute.InternalGetCustomAttributes(的PropertyInfo,类型,布尔),更precisely,的此行。那行没有在 mscorlib程序的previous版本存在,一切都很好。但是,现在它确实存在,这导致了物业类型为的感动的,从而导致加载DLL,它失败了,因为DLL是不存在的。

  5. 等全过程与加载的配置节启动 NamespacePolicyDataStoreFactorySection 键,是这样的:


  ConfigurationManager.GetSection  - &GT;
  ... - &GT;
  BaseConfigurationRecord.GetSectionRecursive - &GT;
  ... - &GT;
  BaseConfigurationRecord.CallCreateSection - &GT;
  MgmtConfigurationRecord.CreateSection - &GT;
  ConfigurationElement.Reset - &GT;
  ConfigurationElement.get_Properties - &GT;
  ConfigurationElement.PropertiesFromType - &GT;
  ConfigurationElement.CreatePropertyBagFromType - &GT;
  Attribute.GetCustomAttribute(类型StorageAccountInfo财产BlobStorageAccountInfo) - GT;
  ... - &GT;
  Attribute.InternalGetCustomAttributes(的PropertyInfo) - &GT;
  Attributes.GetIndexParameterTypes - &GT;
  RuntimePropertyInfo.GetIndexParameters - &GT;
  ... - &GT;
  RuntimeMethodInfo.GetParameters - &GT;
  ... - &GT;
  KABOOM! (触摸返回类型,尝试加载包含该DLL,失败)

部分(徒劳的)尝试以解决办法


  1. 从配置中删除配置部分。不幸的是,服务总线不是很错在这方面的宽容:失败NRE时不节present。它也不可能提供一个替代配置部分处理程序,因为在.NET配置系统处理程序和数据是同一回事。

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

  3. 地方寻找失踪的DLL。试过失败了。有没有提到网络上的DLL,更不用说位。

细心的读者可能会问:哇,等一下! VS2015 CTP5?你说你安装了一个工作的机器上pre-发行版软件?那么,当然这是行不通的,有什么办法?这会教你成为早期采用者!结果
而细心的读者会是绝对正确的:完全是我的错,我知道潜在的危险,我就是这么做的,提供我的权利

但是,这不是问题的关键。我安装pre-发布软件并没有减弱引用一个DLL,而不是把它运的WTFness。虽然我个人将被罚款,我只是想确保这不会突然停止工作时.NET 5被释放,并击中的Windows Update。


解决方案

我知道这是一个迟到问题的答案,它实际上是没有答案的问题问,但今天,在PC上安装VS 2015年RC之后Windows服务总线1.1,并重新启动计算机后,我的服务总线网关服务停止工作,我通过这个问题所描述的所有痛苦都,但最后可以做一个解决方案出来的假装配场景。这里的解决方案:


  1. 创建假冒的组装与Microsoft.Cloud.Common.AzureStorage.dll版本2.1.0.0和新的密钥文件签署。

  2. 拆解它使用:ILDASM /所有/out=azurestorage.il Microsoft.Cloud.Common.AzureStorage.dll

  3. 摘自另一个Microsoft.Cloud公钥和公钥标记。*装配位于服务总线文件夹中ILDASM / TP Microsoft.Cloud.Common.Diagnostics.dll

  4. 打开azurestorage.il在文本编辑器,并改变在最后的步骤中提取的那些公钥令牌和公共密钥

  5. 重新组合IL文件:ILASM / DLL azurestorage.il /out=Microsoft.Cloud.Common.AzureStorage.dll

  6. 注册使用签名验证跳绳大会:SN -Vr Microsoft.Cloud.Common.AzureStorage.dll

  7. 安装生成的程序集海关总署:GACUTIL /我Microsoft.Cloud.Common.AzureStorage.dll

和它终于奏效。希望这有助于人谁陷入了这个问题。

I tried to google. Microsoft Connect doesn't accept bugs for Service Bus. Azure Portal sends to either MS forums or to StackOverflow - so here I am.

The question is really in the title: how do I report a bug with Service Bus?
(not the Azure version, but the one you install on premises)

And here is the issue:

  1. Microsoft.Cloud.ServiceBus.dll has a reference to Microsoft.Cloud.Common.AzureStorage.dll. It uses one type from that assembly - namely, StorageAccountInfo. It's part of a configuration section (namely, NamespacePolicyDataStoreFactorySection.Parameters.BlobStorageAccountInfo), but apparently only makes sense in the Azure environment, and never used in the on-premise scenario.
  2. But here's the catch: Microsoft.Cloud.Common.AzureStorage.dll is not actually shipped with Service Bus 1.1. I tried to find it in various SDKs and Azure toolkits, samples and whatnot (of which I have plenty), as well as online - and found zippo information about that DLL or where to get it. This is the only place I found a mention of it.
  3. Despite being a WTF in itself, the absence of DLL does not really prevent anything from working: the type is not actually touched by any code in the on-premise scenario, so no complaints.
  4. But here's the second catch: mscorlib.dll v4.6.7.0 (which came with VS2015 CTP5) has a slight change compared to the previous version, 4.0.30319.34014, - in System.Attribute.InternalGetCustomAttributes(PropertyInfo,Type,bool), more precisely, this line. That line did not exist in the previous version of mscorlib, and everything was fine. But now it does exist, which leads to the property type being touched, which leads to loading the DLL, which fails, because DLL is not there.
  5. So the whole process starts with loading configuration section NamespacePolicyDataStoreFactorySection and works like this:


  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)

Some (futile) attempts at a workaround

  1. Remove the configuration section from config. Unfortunately, Service Bus is not very fault tolerant in this respect: fails with NRE when section is not present. It is also impossible to provide an alternative config section "handler", because in the .NET config system "handler" and "data" are the same thing.
  2. Provide a fake DLL with the needed type. Can't do that, because everything is strongly named.
  3. Find the missing DLL somewhere. Tried that and failed. There are no mentions of the DLL on the web, let alone the bits.

A careful reader may ask: whoa, wait a minute! VS2015 CTP5?! Are you saying you installed pre-release software on a working machine?! Well then, of course it doesn't work, what did you expect? That'll teach you to be the early adopter!
And the careful reader would be absolutely correct: totally my fault, I knew potential dangers, I did it anyway, serves me right.

But that's not the point. My installing pre-release software doesn't diminish the WTFness of referencing a DLL, but not shipping it. While I personally will be fine, I just want to make sure this doesn't suddenly stop working when .NET 5 is released and hits Windows Update.

解决方案

I know it's a late answer to the question and it is actually not the answer to the question asked, but today, after installing VS 2015 RC on a PC with Windows Service Bus 1.1 and restarting the PC, my service bus gateway service stopped working and I went through all the pain described in this question but finally could make a solution out of the fake assembly scenario. Here's the solution:

  1. Created the fake assembly Microsoft.Cloud.Common.AzureStorage.dll with version 2.1.0.0 and signed it with a new key file.
  2. Disassembled it using: ildasm /all /out=azurestorage.il Microsoft.Cloud.Common.AzureStorage.dll
  3. Extracted the public key and public key token from another Microsoft.Cloud.* assembly located in service bus folder by ildasm /Tp Microsoft.Cloud.Common.Diagnostics.dll
  4. Opened azurestorage.il in a text editor and changed the public-key token and public key with the ones extracted in the last step
  5. Reassembled the il file: ilasm /dll azurestorage.il /out=Microsoft.Cloud.Common.AzureStorage.dll
  6. Registered the assembly for signature verification skipping using: sn -Vr Microsoft.Cloud.Common.AzureStorage.dll
  7. Installed the resulting assembly to GAC: gacutil /i Microsoft.Cloud.Common.AzureStorage.dll

and it finally worked. Hope this helps anyone who got stuck in this problem.

这篇关于我如何报告在Windows Server服务总线中的错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆