Как сообщить об ошибке в служебной шине Windows Server?

я попытался google. Microsoft Connect не принимает ошибки для служебной шины. Портал 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 фактически не поставляется с шины обслуживания 1.1. Я попытался найти его в различных SDK и Azure toolkits, samples и whatnot (которых у меня много), а также в интернете - и нашел информацию zippo об этой DLL или где ее получить. этой - это единственное место, где я нашел упоминание об этом.
  3. несмотря на то, что WTF сам по себе, отсутствие DLL на самом деле ничего не мешает работать: тип фактически не затрагивается каким-либо кодом в локальном сценарии, поэтому никаких жалоб.
  4. но вот второй улов:mscorlib.dll v4.6.7.0 (который поставляется с VS2015 CTP5) имеет небольшое изменение по сравнению с предыдущей версией, 4.0.30319.34014, - in System.Attribute.InternalGetCustomAttributes(PropertyInfo,Type,bool), точнее эта строка. Этой линии не существовало в предыдущем версия mscorlib и все было нормально. Но теперь он существует, что приводит к типу свойства задел, что приводит к загрузке DLL, которая терпит неудачу, потому что DLL там нет.
  5. таким образом, весь процесс начинается с загрузки раздела конфигурации 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)

некоторые (бесполезные) попытки обходного пути

  1. удалите раздел конфигурации из config. К сожалению, Служебная шина не очень отказоустойчива в этом отношении: сбой с NRE, когда раздел отсутствует. Также невозможно предоставить альтернативный раздел конфигурации "обработчик", потому что в системе .NET config" обработчик "и" данные " - это одно и то же.
  2. предоставьте поддельную DLL с необходимым типом. Не могу этого сделать, потому что все сильно названо.
  3. найдите отсутствующую DLL где-нибудь. Попробовал и не смог. Нет никаких упоминаний о DLL в Интернете, не говоря уже о биты.

внимательный читатель может спросить: Эй, подождите минуту! VS2015 CTP5?! Вы говорите, что установили программное обеспечение предварительного выпуска на рабочую машину?! Ну, тогда, конечно, это не работает, чего ты ожидал? Это научит тебя быть первопроходцем!
И внимательный читатель был бы абсолютно прав: полностью моя вина, я знал потенциальные опасности, я все равно сделал это, поделом мне.

но дело не в этом. Моя установка программного обеспечения pre-release не уменьшите WTFness ссылки на DLL, но не доставки его. Хотя я лично буду в порядке, я просто хочу убедиться, что это не внезапно перестает работать, когда .NET 5 выпущен и попадает в Центр обновления Windows.

3 ответов


Я знаю, что это поздний ответ на вопрос, и это на самом деле не ответ на заданный вопрос, но сегодня, после установки VS 2015 RC на ПК с Windows Service Bus 1.1 и перезагрузки ПК, моя служба шлюза служебной шины перестала работать, и я прошел через всю боль, описанную в этом вопросе, но, наконец, мог бы сделать решение из поддельного сценария сборки. Вот решение:

  1. создал поддельную сборку Microsoft.Облако.Общий.AzureStorage.файл DLL с версией 2.1.0.0 и подписал ее новым ключевым файлом.
  2. разобран с помощью: ildasm / all / out=azurestorage.il Microsoft.Облако.Общий.AzureStorage.dll файлы
  3. извлек открытый ключ и маркер открытого ключа из другого Microsoft.Облако.* сборка, расположенная в папке служебной шины ildasm / TP Microsoft.Облако.Общий.Диагностика.dll файлы
  4. открыт azurestorage.il в текстовом редакторе и изменил токен открытого ключа и открытый ключ с теми, которые были извлечены в последнем шаг
  5. собрал файл il: ilasm / dll azurestorage.il / out=Microsoft.Облако.Общий.AzureStorage.dll файлы
  6. зарегистрировал сборку для пропуска проверки подписи с помощью: SN-Vr Microsoft.Облако.Общий.AzureStorage.dll файлы
  7. установил полученную сборку в GAC: gacutil /I Microsoft.Облако.Общий.AzureStorage.dll файлы

и это, наконец, сработало. Надеюсь, это поможет любому, кто застрял в этой проблеме.


Как указано в ответ по Jafin есть, к счастью, официальное исправление от Microsoft release 10/23/2015, который решает проблему с .NET 4.6.

скачать здесь: обновление для сервера служебной шины 1.1 (KB3086798)


Как я понимаю, что вам нужно сообщить об ошибке в Microsoft, и я узнал, что вам нужно сообщить об ошибке в Microsoft. Его хорошо знать, microsoft будет aapriceate пользователей, которые сообщают об ошибках.

в соответствии с ответом Microsoft вы можете сообщить об ошибках Microsfot здесь:https://connect.microsoft.com/

Примечание: Вы должны иметь учетную запись microsoft, вы можете сделать это вhotmail.com

и я знаю некоторые из microsoft продукты не там, как 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: Теперь вы можете написать проблему и рассказать Майкрософт об этой ошибке.