Как сообщить об ошибке в служебной шине Windows Server?
я попытался google. Microsoft Connect не принимает ошибки для служебной шины. Портал Azure отправляет на форумы MS или в StackOverflow-так что я здесь.
вопрос действительно в названии:как сообщить об ошибке в служебной шине?
(не версия Azure, а та, которую вы устанавливаете локально)
и вот вопрос:
-
Microsoft.Cloud.ServiceBus.dll
имеет ссылку наMicrosoft.Cloud.Common.AzureStorage.dll
. Он использует один тип из этой сборки - а именно,StorageAccountInfo
. Это часть раздела конфигурации (а именно,NamespacePolicyDataStoreFactorySection.Parameters.BlobStorageAccountInfo
), но, по-видимому, имеет смысл только в среде Azure и никогда не используется в локальном сценарии. - но вот подвох:
Microsoft.Cloud.Common.AzureStorage.dll
фактически не поставляется с шины обслуживания 1.1. Я попытался найти его в различных SDK и Azure toolkits, samples и whatnot (которых у меня много), а также в интернете - и нашел информацию zippo об этой DLL или где ее получить. этой - это единственное место, где я нашел упоминание об этом. - несмотря на то, что WTF сам по себе, отсутствие DLL на самом деле ничего не мешает работать: тип фактически не затрагивается каким-либо кодом в локальном сценарии, поэтому никаких жалоб.
- но вот второй улов:
mscorlib.dll
v4.6.7.0 (который поставляется с VS2015 CTP5) имеет небольшое изменение по сравнению с предыдущей версией, 4.0.30319.34014, - inSystem.Attribute.InternalGetCustomAttributes(PropertyInfo,Type,bool)
, точнее эта строка. Этой линии не существовало в предыдущем версия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)
некоторые (бесполезные) попытки обходного пути
- удалите раздел конфигурации из config. К сожалению, Служебная шина не очень отказоустойчива в этом отношении: сбой с NRE, когда раздел отсутствует. Также невозможно предоставить альтернативный раздел конфигурации "обработчик", потому что в системе .NET config" обработчик "и" данные " - это одно и то же.
- предоставьте поддельную DLL с необходимым типом. Не могу этого сделать, потому что все сильно названо.
- найдите отсутствующую DLL где-нибудь. Попробовал и не смог. Нет никаких упоминаний о DLL в Интернете, не говоря уже о биты.
внимательный читатель может спросить: Эй, подождите минуту! VS2015 CTP5?! Вы говорите, что установили программное обеспечение предварительного выпуска на рабочую машину?! Ну, тогда, конечно, это не работает, чего ты ожидал? Это научит тебя быть первопроходцем!
И внимательный читатель был бы абсолютно прав: полностью моя вина, я знал потенциальные опасности, я все равно сделал это, поделом мне.
но дело не в этом. Моя установка программного обеспечения pre-release не уменьшите WTFness ссылки на DLL, но не доставки его. Хотя я лично буду в порядке, я просто хочу убедиться, что это не внезапно перестает работать, когда .NET 5 выпущен и попадает в Центр обновления Windows.
3 ответов
Я знаю, что это поздний ответ на вопрос, и это на самом деле не ответ на заданный вопрос, но сегодня, после установки VS 2015 RC на ПК с Windows Service Bus 1.1 и перезагрузки ПК, моя служба шлюза служебной шины перестала работать, и я прошел через всю боль, описанную в этом вопросе, но, наконец, мог бы сделать решение из поддельного сценария сборки. Вот решение:
- создал поддельную сборку Microsoft.Облако.Общий.AzureStorage.файл DLL с версией 2.1.0.0 и подписал ее новым ключевым файлом.
- разобран с помощью: ildasm / all / out=azurestorage.il Microsoft.Облако.Общий.AzureStorage.dll файлы
- извлек открытый ключ и маркер открытого ключа из другого Microsoft.Облако.* сборка, расположенная в папке служебной шины ildasm / TP Microsoft.Облако.Общий.Диагностика.dll файлы
- открыт azurestorage.il в текстовом редакторе и изменил токен открытого ключа и открытый ключ с теми, которые были извлечены в последнем шаг
- собрал файл il: ilasm / dll azurestorage.il / out=Microsoft.Облако.Общий.AzureStorage.dll файлы
- зарегистрировал сборку для пропуска проверки подписи с помощью: SN-Vr Microsoft.Облако.Общий.AzureStorage.dll файлы
- установил полученную сборку в 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: Теперь вы можете написать проблему и рассказать Майкрософт об этой ошибке.