[Mono-aspnet-list] creating new web service from wsdl

Devin Venable venable.devin at gmail.com
Thu Sep 2 11:20:43 EDT 2010


And with NEW I get this error:

TestService.asmx.cs(58,58): Error CS0533:
`blah.blah.EnrollTransmitter(blah.TransmitterEnrollmentRequest)' hides
inherited abstract member
`blah.blahGenerated.EnrollTransmitter(blah.WidgetEnrollmentRequest)'
(CS0533) (TestSOAP2)



2010/9/2 Devin Venable <venable.devin at gmail.com>

> When I don't inherit, I get this compile warning:
>
> TestService.asmx.cs(54,54): Warning CS0114:
> `MyService.MyService.EnrollTransmitter(GTPServices.WidgetEnrollmentRequest)'
> hides inherited member
> `MyService.MyServiceGenerated.EnrollTransmitter(TestService.WidgetEnrollmentRequest)'.
> To make the current member override that implementation, add the override
> keyword. Otherwise add the new keyword (CS0114) (TestSOAP2)
>
> Should I use the new keyword?
>
>
> 2010/9/2 Alberto León <leontiscar at gmail.com>
>
>> Y do not need to override WidgetEnrollmentResponse.
>>
>>
>> 2010/9/2 Devin Venable <venable.devin at gmail.com>
>>
>>> Simple inheritance didn't seem to work, at least not using my pattern.
>>>  Here is a fragment of the code (variable names changed to protect the
>>> innocent):
>>>
>>> In TestService.asmx:
>>>
>>> <%@ WebService Language="C#" Class="MyService.MyService" %>
>>>
>>> In MyServiceGenerated.cs:
>>>
>>> namespace MyService
>>> {
>>>
>>> /// <remarks/>
>>> [System.Web.Services.WebServiceAttribute(Namespace="http://tempuri.org/
>>> ")]
>>> [System.Web.Services.WebServiceBinding(Name="BasicHttpBinding_IMyServices",
>>> Namespace="http://tempuri.org/")]
>>> public abstract partial class MyServiceGenerated :
>>> System.Web.Services.WebService {
>>>
>>>     [System.Web.Services.WebMethodAttribute()]
>>>     [System.Web.Services.Protocols.SoapDocumentMethodAttribute("
>>> http://tempuri.org/IMyServices/EnrollTransmitter", RequestNamespace="
>>> http://tempuri.org/", ResponseNamespace="http://tempuri.org/",
>>> ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped,
>>> Use=System.Web.Services.Description.SoapBindingUse.Literal)]
>>>      [return:
>>> System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
>>>     public abstract WidgetEnrollmentResponse
>>> EnrollTransmitter([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
>>> WidgetEnrollmentRequest request);
>>>     ...
>>>
>>> In TestService.asmx.cs:
>>>
>>> namespace MyService
>>> {
>>>  public class MyService : MyServiceGenerated
>>>  {
>>>
>>> public override WidgetEnrollmentResponse
>>> EnrollTransmitter(WidgetEnrollmentRequest request)
>>>  {
>>>                         // TODO implement
>>> return null;
>>> }
>>>
>>>
>>> Okay, so now when I deploy this, the web page shows up and there are no
>>> visible service methods.  What am I doing wrong, or better yet, what is the
>>> best practice for what I'm trying to do?
>>>
>>> And thanks for the help!
>>>
>>> 2010/9/2 Alberto León <leontiscar at gmail.com>
>>>
>>> You need inherit MyServices in other class.
>>>> An abtract class can't be instantiated, created, and can't store data.
>>>> Allways need to be inherited.
>>>>
>>>>
>>>>
>>>> 2010/9/2 Devin Venable <venable.devin at gmail.com>
>>>>
>>>>>  Background:  Linux developer new to .NET.  In the past I've
>>>>> successfully deployed simple web services by creating asmx files and running
>>>>> them under Apache via XSP.
>>>>> Need: Create web service implementation from WSDL defined by 3rd party
>>>>>
>>>>> This is what I've tried so far...
>>>>>
>>>>> 1. Used wsdl2 to generate server stubs.
>>>>>
>>>>> wsdl2 -server MyServices.wsdl
>>>>> Web Services Description Language Utility
>>>>> Mono Framework v2.0.50727.1433
>>>>>
>>>>> There where some warnings while generating the code:
>>>>>
>>>>>   MyServices.wsdl
>>>>>     - This web reference does not conform to WS-I Basic Profile v1.1
>>>>>         R2718: A wsdl:binding in a DESCRIPTION MUST have the same set
>>>>> of
>>>>>         wsdl:operations as the wsdl:portType to which it refers.
>>>>>           * Binding 'BasicHttpBinding_IMyServices', in Service
>>>>> Description
>>>>>             'http://tempuri.org/'
>>>>>
>>>>>
>>>>> (should this warning make me nervous?)
>>>>>
>>>>> 2. Renamed resulting cs file to MyServices.asmx
>>>>> 3. Added header to file:
>>>>>
>>>>> <%@ WebService Language="c#" Codebehind="MyServices.asmx.cs"
>>>>> Class="MyServices" %>
>>>>>
>>>>> This KINDA worked.  I can load up and view the page in my browser:
>>>>>
>>>>> http://localhost/MyServices.asmx
>>>>>
>>>>> But when I try to invoke a method on the service from the web forms
>>>>> that display, I get a message like:
>>>>>
>>>>> *500 - Internal Server Error*
>>>>>
>>>>> System.MissingMethodException: Cannot create an abstract class 'MyServices'.
>>>>>   at System.Activator.CheckAbstractType (System.Type type) [0x00000]
>>>>>
>>>>>   at System.Activator.CreateInstance (System.Type type, Boolean nonPublic) [0x00000]
>>>>>   at System.Activator.CreateInstance (System.Type type) [0x00000]
>>>>>
>>>>>   at System.Web.Services.Protocols.WebServiceHandler.CreateServerInstance () [0x00000]
>>>>>
>>>>>   at System.Web.Services.Protocols.HttpSimpleWebServiceHandler.Invoke (System.Web.Services.Protocols.LogicalMethodInfo method, System.Object[] parameters) [0x00000]
>>>>>
>>>>>   at System.Web.Services.Protocols.HttpSimpleWebServiceHandler.ProcessRequest (System.Web.HttpContext context) [0x00000]
>>>>>
>>>>>
>>>>> Though I'm not a .NET developer, I'm a developer and can see why trying
>>>>> to create an instance of an abstract class would be an issue.  What I'm not
>>>>> clear on is what is the best
>>>>> pattern to implement the concrete methods.   I've tried implementing a
>>>>> concrete class with all of the methods in the asmx and made the class
>>>>> inherit from the class generated by
>>>>> wsdl2, but when I run the application, the methods disappear.  I'm
>>>>> guessing I need to copy all of the blocks that look like this into the
>>>>> concrete class:
>>>>>
>>>>>  [System.Web.Services.WebMethodAttribute()]
>>>>>     [System.Web.Services.Protocols.SoapDocumentMethodAttribute("
>>>>> http://tempuri.org/IGTPServices/EnrollTransmitter", RequestNamespace="
>>>>> http://tempuri.org/", ResponseNamespace="http://tempuri.org/",
>>>>> ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped,
>>>>> Use=System.Web.Services.Description.SoapBindingUse.Literal)]
>>>>>     [return:
>>>>> System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
>>>>>
>>>>> If anyone can point me to a short tutorial for creating a web service
>>>>> in Mono using an existing WSDL, or give me tips herre, I would appreciate
>>>>> it.
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Mono-aspnet-list mailing list
>>>>> Mono-aspnet-list at lists.ximian.com
>>>>> http://lists.ximian.com/mailman/listinfo/mono-aspnet-list
>>>>>
>>>>>
>>>>
>>>
>>> _______________________________________________
>>> Mono-aspnet-list mailing list
>>> Mono-aspnet-list at lists.ximian.com
>>> http://lists.ximian.com/mailman/listinfo/mono-aspnet-list
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-aspnet-list/attachments/20100902/f2fae070/attachment-0001.html 


More information about the Mono-aspnet-list mailing list