[Mono-bugs] [Bug 687633] New: System.ServiceModel.ClientBase<TChannel> in mono 2.10.1WCF fails with 'Status code 404(NotFound)' or 'Status code 400(BadRequest)'
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Thu Apr 14 13:48:07 EDT 2011
https://bugzilla.novell.com/show_bug.cgi?id=687633
https://bugzilla.novell.com/show_bug.cgi?id=687633#c0
Summary: System.ServiceModel.ClientBase<TChannel> in mono
2.10.1WCF fails with 'Status code 404(NotFound)' or
'Status code 400(BadRequest)'
Classification: Mono
Product: Mono: Runtime
Version: 2.10.x
Platform: 64bit
OS/Version: Windows Server 2008 R2
Status: NEW
Severity: Normal
Priority: P5 - None
Component: remoting
AssignedTo: lluis at novell.com
ReportedBy: emily.lewis at lumension.com
QAContact: mono-bugs at lists.ximian.com
Found By: ---
Blocker: ---
Created an attachment (id=424997)
--> (http://bugzilla.novell.com/attachment.cgi?id=424997)
This is a working solution that reproduces the bug
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64;
Trident/5.0)
I sumbitted a potentially related bug, 687580, but I have noticed a seperate
issue that seems to be unqiue enough that I am being safe by sumbitting a
different bug.
As I stated in the previous bug, I am presently evaluating whether mono 2.10
WCF is stable enough for a project we are working on. I have written a very
simple WCF REST client/server test jig upon which to make this assessment. I
have discovered however, that the test only works if I run the test client in
Microsoft .NET. The client uses System.ServiceModel.ClientBase<TChannel>. Here
are the cases.
First Case ->
- Run the WCF server in Microsoft .NET
- Run the client in mono
- The client always throws the following exception:
---->System.Net.WebException
Message
There was an error on processing web request: Status code
404(NotFound
): Not Found
Stack
at
System.ServiceModel.Channels.HttpRequestChannel+HttpChannelRequestA
syncResult.WaitEnd () [0x0003c] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10
1\mcs\class\System.ServiceModel\System.ServiceModel.Channels\HttpRequestChannel
cs:435
at System.ServiceModel.Channels.HttpRequestChannel.EndRequest
(IAsyncR
esult result) [0x00029] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\c
lass\System.ServiceModel\System.ServiceModel.Channels\HttpRequestChannel.cs:289
at System.ServiceModel.Channels.HttpRequestChannel.Request
(System.Ser
viceModel.Channels.Message message, TimeSpan timeout) [0x00000] in
C:\cygwin\tmp
\monobuild\build\BUILD\mono-2.10.1\mcs\class\System.ServiceModel\System.ServiceM
odel.Channels\HttpRequestChannel.cs:63
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.Request
(Syst
em.ServiceModel.Channels.Message msg, TimeSpan timeout) [0x0000b] in
C:\cygwin\t
mp\monobuild\build\BUILD\mono-2.10.1\mcs\class\System.ServiceModel\System.Servic
eModel\ClientRuntimeChannel.cs:579
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.Request
(Syst
em.ServiceModel.Description.OperationDescription od, System.Object[]
parameters)
[0x00066] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\class\System.S
erviceModel\System.ServiceModel\ClientRuntimeChannel.cs:534
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.DoProcess
(Sy
stem.Reflection.MethodBase method, System.String operationName, System.Object[]
parameters) [0x00038] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\cla
ss\System.ServiceModel\System.ServiceModel\ClientRuntimeChannel.cs:499
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.Process
(Syst
em.Reflection.MethodBase method, System.String operationName, System.Object[]
pa
rameters) [0x00000] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\class
\System.ServiceModel\System.ServiceModel\ClientRuntimeChannel.cs:479
Second Case ->
- Run the WCF server in mono
- Run the client in mono
- The client always throws the following exception:
---->System.Net.WebException
Message
There was an error on processing web request: Status code
400(BadReque
st): Bad Request
Stack
at
System.ServiceModel.Channels.HttpRequestChannel+HttpChannelRequestA
syncResult.WaitEnd () [0x0003c] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10
1\mcs\class\System.ServiceModel\System.ServiceModel.Channels\HttpRequestChannel
cs:435
at System.ServiceModel.Channels.HttpRequestChannel.EndRequest
(IAsyncR
esult result) [0x00029] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\c
lass\System.ServiceModel\System.ServiceModel.Channels\HttpRequestChannel.cs:289
at System.ServiceModel.Channels.HttpRequestChannel.Request
(System.Ser
viceModel.Channels.Message message, TimeSpan timeout) [0x00000] in
C:\cygwin\tmp
\monobuild\build\BUILD\mono-2.10.1\mcs\class\System.ServiceModel\System.ServiceM
odel.Channels\HttpRequestChannel.cs:63
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.Request
(Syst
em.ServiceModel.Channels.Message msg, TimeSpan timeout) [0x0000b] in
C:\cygwin\t
mp\monobuild\build\BUILD\mono-2.10.1\mcs\class\System.ServiceModel\System.Servic
eModel\ClientRuntimeChannel.cs:579
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.Request
(Syst
em.ServiceModel.Description.OperationDescription od, System.Object[]
parameters)
[0x00066] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\class\System.S
erviceModel\System.ServiceModel\ClientRuntimeChannel.cs:534
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.DoProcess
(Sy
stem.Reflection.MethodBase method, System.String operationName, System.Object[]
parameters) [0x00038] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\cla
ss\System.ServiceModel\System.ServiceModel\ClientRuntimeChannel.cs:499
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.Process
(Syst
em.Reflection.MethodBase method, System.String operationName, System.Object[]
pa
rameters) [0x00000] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\class
\System.ServiceModel\System.ServiceModel\ClientRuntimeChannel.cs:479
Here are the details of my test setup (I have included the full Visual Studio
2010 solution in an attachment as well):
Contract
[ServiceContract]
public interface IProfileREST
{
[OperationContract, WebGet(UriTemplate = "Ping")]
void Ping();
}
Server
[ServiceBehavior
(
InstanceContextMode = InstanceContextMode .Single ,
ConcurrencyMode = ConcurrencyMode .Multiple
)
]
public class ProfileRest : IProfileREST
{
#region members
long _hits = 0;
#endregion
#region .ctor
public ProfileRest()
{
}
#endregion
#region IProfileREST
void IProfileREST.Ping()
{
Console.WriteLine("Ping {0}",Interlocked.Increment(ref _hits));
}
#endregion
}
static void Main(string[] args)
{
var address = new Uri("http://localhost:8080/ProfileREST");
var binding = new WebHttpBinding ();
var server = new ProfileRest();
var host = new WebServiceHost(server);
host.AddServiceEndpoint(typeof(IProfileREST), binding, address);
host.Open();
Console.WriteLine("The server is running, press a key to stop...");
Console.ReadKey();
}
Client
public class ProfileRESTClient : ClientBase<IProfileREST>, IProfileREST
{
#region .ctor
public ProfileRESTClient() : base()
{
}
public ProfileRESTClient(Binding binding, EndpointAddress address) :
base(binding, address)
{
base.Endpoint.Behaviors.Add(new WebHttpBehavior());
}
#endregion
#region IProfileREST
void IProfileREST.Ping()
{
base.Channel.Ping();
}
#endregion
}
static void Main(string[] args)
{
EndpointAddress address = new EndpointAddress(new
Uri("http://localhost:8080/ProfileREST"));
Binding binding = new WebHttpBinding();
using (IProfileREST client = new ProfileRESTClient(binding,
address))
{
client.Ping();
}
}
Reproducible: Always
Steps to Reproduce:
1. Run the server in Microsoft.net
2. Run the client in mono
3. The client will throw an exception
Alternatively:
1. Run the server in mono
2. Run the client in mono
3. The client will throw an exception
Actual Results:
If the server is running in Microsoft.net the following exception is thrown on
the client:
---->System.Net.WebException
Message
There was an error on processing web request: Status code
404(NotFound
): Not Found
Stack
at
System.ServiceModel.Channels.HttpRequestChannel+HttpChannelRequestA
syncResult.WaitEnd () [0x0003c] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10
1\mcs\class\System.ServiceModel\System.ServiceModel.Channels\HttpRequestChannel
cs:435
at System.ServiceModel.Channels.HttpRequestChannel.EndRequest
(IAsyncR
esult result) [0x00029] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\c
lass\System.ServiceModel\System.ServiceModel.Channels\HttpRequestChannel.cs:289
at System.ServiceModel.Channels.HttpRequestChannel.Request
(System.Ser
viceModel.Channels.Message message, TimeSpan timeout) [0x00000] in
C:\cygwin\tmp
\monobuild\build\BUILD\mono-2.10.1\mcs\class\System.ServiceModel\System.ServiceM
odel.Channels\HttpRequestChannel.cs:63
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.Request
(Syst
em.ServiceModel.Channels.Message msg, TimeSpan timeout) [0x0000b] in
C:\cygwin\t
mp\monobuild\build\BUILD\mono-2.10.1\mcs\class\System.ServiceModel\System.Servic
eModel\ClientRuntimeChannel.cs:579
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.Request
(Syst
em.ServiceModel.Description.OperationDescription od, System.Object[]
parameters)
[0x00066] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\class\System.S
erviceModel\System.ServiceModel\ClientRuntimeChannel.cs:534
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.DoProcess
(Sy
stem.Reflection.MethodBase method, System.String operationName, System.Object[]
parameters) [0x00038] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\cla
ss\System.ServiceModel\System.ServiceModel\ClientRuntimeChannel.cs:499
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.Process
(Syst
em.Reflection.MethodBase method, System.String operationName, System.Object[]
pa
rameters) [0x00000] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\class
\System.ServiceModel\System.ServiceModel\ClientRuntimeChannel.cs:479
If the server is running in mono the following exception is thrown on the
client:
---->System.Net.WebException
Message
There was an error on processing web request: Status code
400(BadReque
st): Bad Request
Stack
at
System.ServiceModel.Channels.HttpRequestChannel+HttpChannelRequestA
syncResult.WaitEnd () [0x0003c] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10
1\mcs\class\System.ServiceModel\System.ServiceModel.Channels\HttpRequestChannel
cs:435
at System.ServiceModel.Channels.HttpRequestChannel.EndRequest
(IAsyncR
esult result) [0x00029] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\c
lass\System.ServiceModel\System.ServiceModel.Channels\HttpRequestChannel.cs:289
at System.ServiceModel.Channels.HttpRequestChannel.Request
(System.Ser
viceModel.Channels.Message message, TimeSpan timeout) [0x00000] in
C:\cygwin\tmp
\monobuild\build\BUILD\mono-2.10.1\mcs\class\System.ServiceModel\System.ServiceM
odel.Channels\HttpRequestChannel.cs:63
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.Request
(Syst
em.ServiceModel.Channels.Message msg, TimeSpan timeout) [0x0000b] in
C:\cygwin\t
mp\monobuild\build\BUILD\mono-2.10.1\mcs\class\System.ServiceModel\System.Servic
eModel\ClientRuntimeChannel.cs:579
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.Request
(Syst
em.ServiceModel.Description.OperationDescription od, System.Object[]
parameters)
[0x00066] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\class\System.S
erviceModel\System.ServiceModel\ClientRuntimeChannel.cs:534
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.DoProcess
(Sy
stem.Reflection.MethodBase method, System.String operationName, System.Object[]
parameters) [0x00038] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\cla
ss\System.ServiceModel\System.ServiceModel\ClientRuntimeChannel.cs:499
at System.ServiceModel.MonoInternal.ClientRuntimeChannel.Process
(Syst
em.Reflection.MethodBase method, System.String operationName, System.Object[]
pa
rameters) [0x00000] in
C:\cygwin\tmp\monobuild\build\BUILD\mono-2.10.1\mcs\class
\System.ServiceModel\System.ServiceModel\ClientRuntimeChannel.cs:479
Expected Results:
The client should be able to call the server without receiving any exceptions
both when the client runs in mono and in Microsoft .Net.
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
More information about the mono-bugs
mailing list