Не удалось загрузить тип «System.Runtime.Serialization.Json.DataContractJsonSerializer».

Я новичок в mono/linux, и я пытался разместить свой существующий веб-сайт asp.net mvc3 на ubuntu/apache2, используя mod_mono. Все идет нормально, за исключением вызовов службы ServiceStack, которые, кажется, терпят неудачу при десериализации ответа от службы (служба находится на том же компьютере, размещенном в другом процессе). Я посмотрел на mono gac, там есть сборка (правильная версия/ключ). Более того, если я запускаю сайт из monodevelop/xsp, все работает нормально. Приветствуется любая идея относительно того, почему происходит сбой загрузки типа.


    Could not load type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' from assembly 'System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

    Stack Trace:

    System.TypeLoadException: Could not load type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' from assembly 'System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
      at ServiceStack.ServiceClient.Web.JsonServiceClient.DeserializeFromStream[List`1] (System.IO.Stream stream) [0x00000] in :0
      at ServiceStack.ServiceClient.Web.ServiceClientBase.HandleResponse[List`1] (System.Net.WebResponse webResponse) [0x00000] in :0
      at ServiceStack.ServiceClient.Web.ServiceClientBase.Send[List`1] (System.String httpMethod, System.String relativeOrAbsoluteUrl, System.Object request) [0x00000] in :0

Я использую:


    Mono Runtime Version: 2.10.8.1 (Debian 2.10.8.1-5ubuntu1);
    ASP.NET Version: 4.0.30319.1
    ServiceStack 3.9.32


person Andrew Shader    schedule 16.01.2013    source источник


Ответы (1)


У меня была такая же проблема. Это происходит из-за того, что библиотеки ServiceStack не могут найти версию System.ServiceModel.Web версии 3.5 во время выполнения. Я скопировал версию 3.5 из моно "gac" в каталог bin приложений, и все заработало правильно. Пути могут отличаться в вашей системе/развертывании, но вот что я использовал:

cp /usr/lib/mono/gac/System.ServiceModel.Web/3.5.0.0__31bf3856ad364e35/System.ServiceModel.Web.dll /var/www/path/to/web/app/bin/
person Matt McCabe    schedule 28.06.2013