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

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


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/6b749ce6/attachment.html 


More information about the Mono-aspnet-list mailing list