[Mono-dev] ASP.NET Web API on Mono 3.0 (Could not load type 'System.Web.Http.WebHost.HttpControllerHandler')

Rafael Teixeira monoman at gmail.com
Thu Oct 25 10:33:14 UTC 2012


Nope, Mono 3.0 doesn't contain the method GetBufferlessInputStream in the
class System.Web.HttpRequest, see:

https://github.com/mono/mono/blob/master/mcs/class/System.Web/System.Web/HttpRequest.cs

This method was introduced in .NET 4.0 and is not to yet implemented in
Mono.
Please open an issue for it, a patch/pull request to solve the issue would
be a very welcome addition.

Fun,

Rafael "Monoman" Teixeira
---------------------------------------
"The most exciting phrase to hear in science, the one that heralds new
discoveries, is not 'Eureka!' (I found it!) but 'That's funny ...'"
Isaac Asimov
US science fiction novelist & scholar (1920 - 1992)


On Thu, Oct 25, 2012 at 12:51 AM, Daniel Lo Nigro <lists at dan.cx> wrote:

> Thanks for your reply.
>
> I found that my app is referencing version 2.0.0.0 of System.Net.Http.dll,
> probably because I'm only using .NET Framework 4.0 (not 4.5) on my Windows
> machine. I created an assembly binding in my Web.config to redirect to the
> newer version:
>
>       <dependentAssembly>
>         <assemblyIdentity name="System.Net.Http"
> publicKeyToken="b03f5f7f11d50a3a" />
>         <bindingRedirect oldVersion="2.0.0.0" newVersion="4.0.0.0" />
>       </dependentAssembly>
>
> I'll raise a bug for the missing IHostBufferPolicySelector interface. I
> tried working around this by uploading a copy of the Microsoft build of
> System.Net.Http.dll 4.0.0.0.
>
> This got the basic site working (the "Welcome to ASP.NET Web API" page in
> the default template), but I'm getting this error whenever I try to use a
> WebAPI controller:
>
> Missing method System.Web.HttpRequest::GetBufferlessInputStream() in
> assembly
> /opt/mono-3.0.0/lib/mono/gac/System.Web/4.0.0.0__b03f5f7f11d50a3a/System.Web.dll,
> referenced in assembly
> /tmp/root-temp-aspnet-0/2956977a/assembly/shadow/5cf10065/cf4140da_93b040bf_00000001/System.Web.Http.WebHost.dll
>
> This is confusing, as Mono's status page shows this method as implemented:
> http://go-mono.com/status/status.aspx?reference=4.0&profile=4.5&assembly=System.Web. However,
> I opened Mono's System.Web.dll in a decompiler and can see that
> GetBufferlessInputSteam() is missing.
>
>
> On Wed, Oct 24, 2012 at 10:35 PM, Rafael Teixeira <monoman at gmail.com>wrote:
>
>> Hi Daniel,
>>
>> Well at
>> https://github.com/mono/mono/blob/master/mcs/class/System.Net.Http/System.Net.Http/HttpMessageInvoker.cs one
>> can see that such class is part of Mono and stable for at least 5 months,
>> so it surely should be found in Mono 3.0 but from your log it seems that
>> your server is loading a copy found on your bin directory, that may be
>> outdated...
>>
>> *Mono: Assembly Loader probing location:
>> '/var/www/WebApiTest/bin/System.Net.Http.dll'.
>> Mono: Assembly Loader shadow-copied assembly to:
>> '/tmp/root-temp-aspnet-0/2956977a/assembly/shadow/ebec392e/785c7991_93b040bf_00000001/System.Net.Http.dll'.
>> *
>> So please get rid of your copy of System.Net.Http.dll, and it should work.
>>
>> In the other hand surely IHostBufferPolicySelector is missing from
>> https://github.com/mono/mono/blob/master/mcs/class/System.Web.Http/System.Web.Http.dll.sources.
>> Maybe this is newer than the open sourced files from Microsoft being used
>> in that part of Mono.
>>
>> Please open an issue for this second problem, probably the aspnetstack
>> needs to be refreshed, although this may appear only in the 4.5 profile,
>> I'm not sure what are the .NET platform requirements for ASP.NET Web API.
>>
>> Fun,
>>
>> Rafael "Monoman" Teixeira
>> ---------------------------------------
>> "The most exciting phrase to hear in science, the one that heralds new
>> discoveries, is not 'Eureka!' (I found it!) but 'That's funny ...'"
>> Isaac Asimov
>> US science fiction novelist & scholar (1920 - 1992)
>>
>>
>>
>> On Wed, Oct 24, 2012 at 2:03 AM, Daniel Lo Nigro <lists at dan.cx> wrote:
>> >
>> > Just rediscovered the MONO_LOG_LEVEL="debug" environment variable.
>> Here's the log from my app: http://sprunge.us/eXOV. I think these might
>> be related, but of course I could be totally wrong:
>> > Mono: The class System.Web.Http.Hosting.IHostBufferPolicySelector could
>> not be loaded, used in System.Web.Http, Version=4.0.0.0, Culture=neutral,
>> PublicKeyToken=31bf3856ad364e35
>> > Mono: The class System.Net.Http.HttpMessageInvoker could not be loaded,
>> used in System.Net.Http, Version=2.0.0.0, Culture=neutral,
>> PublicKeyToken=b03f5f7f11d50a3a
>> >
>> > Thoughts?
>> >
>> >
>> >
>> > On Wed, Oct 24, 2012 at 2:23 PM, Daniel Lo Nigro <lists at dan.cx> wrote:
>> >>
>> >> I'm trying to get ASP.NET WebApi working on Mono 3.0, and am getting
>> >> the following error:
>> >>
>> >> System.TypeLoadException: Could not load type
>> >> 'System.Web.Http.WebHost.HttpControllerHandler' from assembly
>> >> 'System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral,
>> >> PublicKeyToken=31bf3856ad364e35'.
>> >>   at (wrapper managed-to-native) System.Type:type_is_assignable_from
>> >> (System.Type,System.Type)
>> >>   at System.Type.IsAssignableFrom (System.Type c) [0x00096] in
>> >> /usr/local/src/mono-3.0.0/mcs/class/corlib/System/Type.cs:902
>> >>   at System.Web.Mvc.AreaRegistration.IsAreaRegistrationType
>> >> (System.Type type) [0x00000] in <filename unknown>:0
>> >>   at
>> System.Web.Mvc.TypeCacheUtil+<>c__DisplayClass1.<FilterTypesInAssemblies>b__0
>> >> (System.Type type) [0x00000] in <filename unknown>:0
>> >>   at
>> System.Linq.Enumerable+<CreateWhereIterator>c__Iterator35`1[System.Type].MoveNext
>> >> () [0x00059] in
>> >>
>> /usr/local/src/mono-3.0.0/mcs/class/System.Core/System.Linq/Enumerable.cs:3030
>> >>   at System.Collections.Generic.List`1[System.Type].AddEnumerable
>> >> (IEnumerable`1 enumerable) [0x00013] in
>> >>
>> /usr/local/src/mono-3.0.0/mcs/class/corlib/System.Collections.Generic/List.cs:134
>> >>   at System.Collections.Generic.List`1[System.Type]..ctor
>> >> (IEnumerable`1 collection) [0x0002f] in
>> >>
>> /usr/local/src/mono-3.0.0/mcs/class/corlib/System.Collections.Generic/List.cs:69
>> >>   at System.Linq.Enumerable.ToList[Type] (IEnumerable`1 source)
>> >> [0x00006] in
>> /usr/local/src/mono-3.0.0/mcs/class/System.Core/System.Linq/Enumerable.cs:2867
>> >>   at System.Web.Mvc.TypeCacheUtil.GetFilteredTypesFromAssemblies
>> >> (System.String cacheName, System.Predicate`1 predicate, IBuildManager
>> >> buildManager) [0x00000] in <filename unknown>:0
>> >>   at System.Web.Mvc.AreaRegistration.RegisterAllAreas
>> >> (System.Web.Routing.RouteCollection routes, IBuildManager
>> >> buildManager, System.Object state) [0x00000] in <filename unknown>:0
>> >>   at System.Web.Mvc.AreaRegistration.RegisterAllAreas (System.Object
>> >> state) [0x00000] in <filename unknown>:0
>> >>   at System.Web.Mvc.AreaRegistration.RegisterAllAreas () [0x00000] in
>> >> <filename unknown>:0
>> >>   at Daniel15.WebApiTest.WebApiApplication.Application_Start ()
>> >> [0x00000] in <filename unknown>:0
>> >>   at (wrapper managed-to-native)
>> >> System.Reflection.MonoMethod:InternalInvoke
>> >> (System.Reflection.MonoMethod,object,object[],System.Exception&)
>> >>   at System.Reflection.MonoMethod.Invoke (System.Object obj,
>> >> BindingFlags invokeAttr, System.Reflection.Binder binder,
>> >> System.Object[] parameters, System.Globalization.CultureInfo culture)
>> >> [0x000d5] in
>> /usr/local/src/mono-3.0.0/mcs/class/corlib/System.Reflection/MonoMethod.cs:229
>> >>
>> >> Followed by this error:
>> >> System.TypeLoadException:
>> >> A type load exception has occurred.
>> >> Description: HTTP 500.Error processing request.
>> >> Details: Non-web exception. Exception origin (name of application or
>> >> object): Daniel15.WebApiTest.
>> >>
>> >> Are there additional debug flags I can use to determine what's causing
>> >> this and why it's unable to load the type? I'm using Mono 3.0
>> >> (compiled from source) and xsp/fastcgi-mono-server4 (latest Git
>> >> version)
>> >>
>> >> Thanks in advance!
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Mono-devel-list mailing list
>> > Mono-devel-list at lists.ximian.com
>> > http://lists.ximian.com/mailman/listinfo/mono-devel-list
>> >
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20121025/78829794/attachment-0001.html>


More information about the Mono-devel-list mailing list