[Mono-dev] wsHttpBinding Hangs - Mono 3.0.9

jadfab jfyfe at jadfab.onmicrosoft.com
Sun May 5 13:18:29 UTC 2013


Hello, 

I have a self hosted service in WCF which is hanging whenever I use
wsHttpBinding from the configuration file. The code works as expected when
bound to basicHttpBinding but fails whenever I change the binding to
basicHttpBinding. 

I ran "mono -v Program.exe" and executed a SOAP request using SOAP UI , this
is the last few lines of output:

converting method System.Net.HttpListener:SelectAuthenticationScheme
(System.Net.HttpListenerContext)
Method System.Net.HttpListener:SelectAuthenticationScheme
(System.Net.HttpListenerContext) emitted at 0x4021bfb0 to 0x4021bffc (code
length 76) [Program.exe]
converting method
System.ServiceModel.Channels.Http.HttpStandaloneListenerManager/<RegisterListener>c__AnonStoreyF:<>m__10
(System.Net.HttpListenerRequest)
Method
System.ServiceModel.Channels.Http.HttpStandaloneListenerManager/<RegisterListener>c__AnonStoreyF:<>m__10
(System.Net.HttpListenerRequest) emitted at 0x4021c000 to 0x4021c01e (code
length 30) [Program.exe]
converting method System.Net.ListenerAsyncResult:InvokeCallback (object)
Method System.Net.ListenerAsyncResult:InvokeCallback (object) emitted at
0x4021c020 to 0x4021c0cc (code length 172) [Program.exe]
converting method
System.ServiceModel.Channels.Http.HttpStandaloneListenerManager:GetContextCompleted
(System.IAsyncResult)
Method
System.ServiceModel.Channels.Http.HttpStandaloneListenerManager:GetContextCompleted
(System.IAsyncResult) emitted at 0x4021c0d0 to 0x4021c168 (code length 152)
[Program.exe]
converting method System.Net.HttpListener:EndGetContext
(System.IAsyncResult)
Method System.Net.HttpListener:EndGetContext (System.IAsyncResult) emitted
at 0x4021c180 to 0x4021c390 (code length 528) [Program.exe]
converting method System.Net.ListenerAsyncResult:get_IsCompleted ()
Method System.Net.ListenerAsyncResult:get_IsCompleted () emitted at
0x4021c3c0 to 0x4021c45f (code length 159) [Program.exe]
converting method System.Net.ListenerAsyncResult:GetContext ()
Method System.Net.ListenerAsyncResult:GetContext () emitted at 0x4021c460 to
0x4021c4a8 (code length 72) [Program.exe]
converting method System.Net.HttpListenerContext:ParseAuthentication
(System.Net.AuthenticationSchemes)
Method System.Net.HttpListenerContext:ParseAuthentication
(System.Net.AuthenticationSchemes) emitted at 0x4021c4b0 to 0x4021c5d6 (code
length 294) [Program.exe]
converting method
System.ServiceModel.Channels.Http.HttpStandaloneListenerManager:ProcessNewContext
(System.Net.HttpListenerContext)
Method
System.ServiceModel.Channels.Http.HttpStandaloneListenerManager:ProcessNewContext
(System.Net.HttpListenerContext) emitted at 0x4021c5e0 to 0x4021c62d (code
length 77) [Program.exe]
converting method
System.ServiceModel.Channels.Http.HttpStandaloneContextInfo:.ctor
(System.Net.HttpListenerContext)
Method System.ServiceModel.Channels.Http.HttpStandaloneContextInfo:.ctor
(System.Net.HttpListenerContext) emitted at 0x4021c650 to 0x4021c6bf (code
length 111) [Program.exe]
converting method
System.ServiceModel.Channels.Http.HttpListenerManager:ProcessNewContext
(System.ServiceModel.Channels.Http.HttpContextInfo)
Method
System.ServiceModel.Channels.Http.HttpListenerManager:ProcessNewContext
(System.ServiceModel.Channels.Http.HttpContextInfo) emitted at 0x4021c6c0 to
0x4021c74c (code length 140) [Program.exe]
converting method
System.ServiceModel.Channels.Http.HttpListenerManager:SelectChannel
(System.ServiceModel.Channels.Http.HttpContextInfo)
Method System.ServiceModel.Channels.Http.HttpListenerManager:SelectChannel
(System.ServiceModel.Channels.Http.HttpContextInfo) emitted at 0x4021c770 to
0x4021c844 (code length 212) [Program.exe]
converting method
System.ServiceModel.Channels.Http.HttpChannelListenerEntry:FilterHttpContext
(System.ServiceModel.Channels.Http.HttpContextInfo)
Method
System.ServiceModel.Channels.Http.HttpChannelListenerEntry:FilterHttpContext
(System.ServiceModel.Channels.Http.HttpContextInfo) emitted at 0x4021c870 to
0x4021ca61 (code length 497) [Program.exe]
converting method
System.ServiceModel.Channels.Http.HttpStandaloneContextInfo:get_Request ()
Method
System.ServiceModel.Channels.Http.HttpStandaloneContextInfo:get_Request ()
emitted at 0x4021ca80 to 0x4021ca94 (code length 20) [Program.exe]
converting method
System.ServiceModel.Channels.Http.HttpStandaloneRequestInfo:get_HttpMethod
()
Method
System.ServiceModel.Channels.Http.HttpStandaloneRequestInfo:get_HttpMethod
() emitted at 0x4021caa0 to 0x4021cabe (code length 30) [Program.exe]

Looking into the code, methinks the WaitHandle from HttpListenerManager is
the culprit. 

var ce = SelectChannel (ctxi);
if (ce == null)
       throw new InvalidOperationException ("HttpListenerContext does not
match any of the registered channels");
ce.ContextQueue.Enqueue (ctxi);
ce.WaitHandle.Set ();

I can try to fix this on my own however I was wondering if anyone else has
encountered this problem before and what the fix was before I go digging
into code :)

Thanks in advance
-Justin



--
View this message in context: http://mono.1490590.n4.nabble.com/wsHttpBinding-Hangs-Mono-3-0-9-tp4659590.html
Sent from the Mono - Dev mailing list archive at Nabble.com.


More information about the Mono-devel-list mailing list