Получение «Не удалось разрешить тип с токеном 0100028 из typeref» из BrowserCapabilitiesFactory в Mono - PullRequest
1 голос
/ 13 мая 2019

В настоящее время я создаю небольшой встроенный веб-сервер, используя Mono (используя MonoDevelop в Linux).При попытке определить тип браузера по рекомендации из примера кода я столкнулся с проблемой.Программа правильно компилируется , но приведенный ниже код вызывает сбой программы при входе в функцию, в которой она объявлена:

using System.Collections;
using System.Collections.Specialized;
using System.Web;
using System.Web.Configuration;

[...]

var l_caps = new HttpBrowserCapabilities
{
  Capabilities = new Hashtable { { string.Empty, p_http_context.Request.UserAgent } }
};

var l_capsFactory = new BrowserCapabilitiesFactory();

l_capsFactory.ConfigureBrowserCapabilities(new NameValueCollection(), l_caps);

Приведенный выше код должен был проанализировать строку пользовательского агента длязаголовки запроса (присутствующие в p_http_context.Request.UserAgent), позволяющие открывать возможности браузера клиента на стороне сервера в объекте l_caps.Однако, если в коде присутствует следующая строка, как только поток программы достигает функции, возникает исключение, описанное ниже.Комментирование строки исключает исключение, но только потому, что оно удаляет функциональность:

var l_capsFactory = new BrowserCapabilitiesFactory();

Получена следующая ошибка:

System.TypeLoadException: Не удалось разрешить тип с токеном 01000028из typeref (ожидаемый класс> 'System.Web.Configuration.BrowserCapabilitiesFactory' в сборке 'System.Web, версия = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a') в Server.Context.onNewRequest (System.Object p_origin,>Server.Listener + NewContextEventArgs p_args) [0x000b9] в Context.cs: 143

У меня нет пакета NuGet.Я не использую ASP.Net, это чисто консольное приложение (демон), использующее HttpListener.Таким образом, традиционные методы получения возможностей браузера недоступны (а именно, Request.Browser не доступен в этом контексте).

Я пробовал следующее:

  • по-разномуверсии задействованных библиотек;
  • очистка решения;
  • удаление всех папок bin и obj из решения и подпроектов;
  • сборка в режимах отладки и выпуска;
  • переустановка;
  • комбинаций вышеперечисленного.

Я также искал решения для нескольких похожих проблем как на Stack Overflow, так и на других платформах, но ни одно из решений дляэти проблемы, когда они были обнаружены, оказали положительное влияние на эту конкретную ситуацию.Примеры:

Версии:

  • Mono 5.18.1.3
  • .Net Framework4.7, 4.7.1, 4.7.2
  • C # версия: все от 5 до 7.3
  • MonoDevelop 7.8.2
  • Linux Ubuntu 18.04

В качестве попытки грубо диагностировать это, я также включил моно библиотеки в / usr / lib / mono дляТокен BrowserCapabilitiesFactory, дающий положительные результаты.

Есть ли у кого-нибудь какие-либо предложения по решению для дальнейшей диагностики этой ситуации?

Я пропустил какую-либо дополнительную ссылку на сборку в проекте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...