Re: System.Guid
- From: "RYoung" <rcyoung@xxxxxxxxx>
- Date: Thu, 21 Dec 2006 12:26:29 -0600
Sorry about that, didn't realize System.Guid was serializable.
I can't reproduce the error here. Just a simple web service with the same
signature as what you've posted, and a console client calling the service
and passing a Guid.NewGuid() to it. Tried Guid.Empty as well.
Is it safe to say that since you aren't getting a SoapException, that the
exception is occuring on the client side? I know you mention changing the
signature from Guid to String and everything works, but I think there's an
issue serializing the value of what's supposed to be a guid on the client.
How about if you change the signature to string, have the service log the
value it receives and see if that value is a valid Guid format?
Ron
"Michael Primeaux" <mjprimeaux@xxxxxxx> wrote in message
news:OPG8JMQJHHA.4384@xxxxxxxxxxxxxxxxxxxxxxx
Hi Ron,
I appreciate your time. As indicated in my previous post that is precisely
what I do. The issue is that I receive the following error when doing so:
[WebMethod]
void HelloWorld(Guid parameter1);
When calling this method I receive the following error:
System.IndexOutOfRangeException: Index was outside the bounds of the
array.
at System.Web.Services.Protocols.HttpServerType..ctor(Type type)
at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type,
HttpContext context, HttpRequest request, HttpResponse response)
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type,
HttpContext context, HttpRequest request, HttpResponse response, Boolean&
abortProcessing)If I change the type of parameter1 to a simple type such
as
string or int then the method works as expected. My operating system is
Windows 2003 Server R2 (Enterprise Edition) with all the latest patches.
"RYoung" <rcyoungatinkspotdev.com> wrote in message
news:ufmLI2SAHHA.3380@xxxxxxxxxxxxxxxxxxxxxxx
You could define GUID as a schema type and use that versus System.Guid
and relying on how the platform will translate it:
The following was snipped off the web:
<xsd:simpleType name="GUID">
<xsd:annotation>
<xsd:documentation xml:lang="en">
The representation of a GUID, generally the id of an element.
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:pattern
value="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}"/>
</xsd:restriction>
</xsd:simpleType>
I believe I've seen that same type definition for one of Microsoft's
products, SharePoint or something maybe.
Ron
"Michael Primeaux" <mjprimeaux@xxxxxxx> wrote in message
news:OIH6fJp$GHA.3560@xxxxxxxxxxxxxxxxxxxxxxx
Hi John,
I do understand the Guid parameter is a platform-specific type. That
said, the generated WSDL defines the type as a string but with format
constraints (a regular expression in the form
"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}".
I have both JAVA and PHP consumers calling several services with Guid
parameters without issue; again, from their perspective it's a string
with format contraints.
However, this does not explain the below exception. Any help specific as
to why the exception occurs is appreciated.
Kindest regards,
Michael
"John Saunders" <john.saunders at trizetto.com> wrote in message
news:uKsqdjT9GHA.1188@xxxxxxxxxxxxxxxxxxxxxxx
"Michael Primeaux" <mjprimeaux@xxxxxxx> wrote in message
news:%23oldr4$8GHA.1172@xxxxxxxxxxxxxxxxxxxxxxx
I have a simple .NET 2.0 web service created with VS.NET 2005 with a
single web method with the following signature:
[WebMethod]
void HelloWorld(Guid parameter1);
When calling this method I receive the following error:
System.IndexOutOfRangeException: Index was outside the bounds of the
array.
at System.Web.Services.Protocols.HttpServerType..ctor(Type type)
at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocol.SetContext(Type
type, HttpContext context, HttpRequest request, HttpResponse response)
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type
type, HttpContext context, HttpRequest request, HttpResponse response,
Boolean& abortProcessing)If I change the type of parameter1 to a
simple type such as string or int then the method works as expected.
My operating system is Windows 2003 Server R2 (Enterprise Edition)
with all the latest patches.
I see several other people have run into this error. Does anyone have
an idea how to correct this?
First of all, I'd suggest that System.Guid is a platform-specific type,
so why do you want to use it in a Web Service? Perhaps you should make
your parameter be of type string, and then parse out the Guid from the
string.
John
.
- References:
- Re: System.Guid
- From: Michael Primeaux
- Re: System.Guid
- Prev by Date: Re: System.Guid
- Next by Date: WebService-Mode: Binary instead XML
- Previous by thread: Re: System.Guid
- Next by thread: WebService-Mode: Binary instead XML
- Index(es):
Relevant Pages
|