【发布时间】:2015-04-04 15:54:41
【问题描述】:
我试着用谷歌搜索。 Microsoft Connect 不接受服务总线的错误。 Azure 门户发送到 MS 论坛或 StackOverflow - 所以我在这里。
问题确实在标题中:如何报告 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.dllv4.6.7.0(与 VS2015 CTP5 一起提供)与之前的版本 4.0.30319.34014 相比略有变化,-在System.Attribute.InternalGetCustomAttributes(PropertyInfo,Type,bool),更准确地说是this line .之前的mscorlib版本中不存在该行,一切都很好。但是现在确实存在,导致属性类型被touched,导致加载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)
一些(徒劳的)尝试解决方法
- 从 config.xml 中删除配置部分。不幸的是,服务总线在这方面的容错性不是很好:当部分不存在时,NRE 失败。也不可能提供替代配置部分“处理程序”,因为在 .NET 配置系统中,“处理程序”和“数据”是同一回事。
- 提供具有所需类型的假 DLL。不能这样做,因为所有内容都是强命名的。
- 在某处找到丢失的 DLL。试过了,失败了。网络上没有提到 DLL,更不用说那些位了。
细心的读者可能会问:哇,等一下! VS2015 CTP5?!你是说你在工作机器上安装了预发布软件?!那么,当然它不起作用,你期望什么?这将教你成为早期采用者!
细心的读者会是绝对正确的:完全是我的错,我知道潜在的危险,我还是做了,对我有好处。
但这不是重点。我安装的预发布软件不会减少引用 DLL 的 WTFness,但不会减少它的发布。虽然我个人会很好,但我只是想确保当 .NET 5 发布并点击 Windows 更新时它不会突然停止工作。
【问题讨论】:
-
But that's not the point.关键是您不知道如何报告错误/与谁联系以获得软件产品... -
我就这个问题联系了微软,他们directed me to this。在那里你应该可以联系他们,或者至少可以和他们聊天报告错误。
-
但这是对小型企业的支持,不是吗?我会试试这个,但你确定我可以在没有小型企业帐户的情况下这样做吗?
-
微软说这是报告 Windows Server 服务总线错误的地方。我试过了,您可以在没有任何帐户(Microsoft 帐户除外)的情况下开始聊天。我不确定这是否是最终目标,或者他们是否会尝试将您重定向到其他地方。
-
尝试在 Twitter 上 ping Azure 团队。有时他们会非常敏感,并为您指明正确的方向。或者,您可以随时尝试小型企业支持。我听说它们是很棒的解决方案。
标签: azure .net-core azureservicebus servicebus mscorlib