[Mono-aspnet-list] creating new web service from wsdl
Devin Venable
venable.devin at gmail.com
Thu Sep 2 10:59:22 EDT 2010
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
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-aspnet-list/attachments/20100902/3bda603e/attachment.html
More information about the Mono-aspnet-list
mailing list