WCF / ASMX :: Web Service - WebMethod Accepting Custom Object?
May 11, 2010
I have a custom class declared as follows (in vb.net)
<Serializable()> _
Public Class NumInfo
Public n As String
Public f As Integer
Public fc As char()
Public t As Integer
Public tc As char()
Private validFlag As Boolean = True
Public Sub New()
End Sub
I also have public properties(read/write) for all the public variables
End Class
In my service.asmx codebehind class I have a webmethod as follows:
<WebMethod> _
<XmlInclude(GetType(NumInfo))>
Public Function ConvertTo(ByVal info As NumInfo) As String
Return mbc(info)
'mbc is another function defined in my service.asmx "service" class
End Function
The problem is that when I start debugging it to test it, the page that I get does not contain any fields where I could input the values for the public fields of numInfo. How do I initialise the class? There is no "Invoke" button either. All I see are soap details as below:
ConvertTo
Test
The test form is only available for methods with primitive types as parameters. SOAP 1.1 The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.
POST /BaseConverter/BaseCon.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://RohitServices.in/ConvertTo"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ConvertTo xmlns="http://RohitServices.in/">
<info>
<n>string</n>
<f>int</f>
<fc>
<char>char</char>
<char>char</char>
</fc>
What am I doing wrong? For the record I tried replacing char() with string to see if it was the array causing problems but that didn't help either. I'm fairly new to web services. I tried replacing the custom object parameter with a primitive parameter just to check how things worked and it rendered a page with an input field and invoke button. I just can't seem to get it working with custom object.
I have a custom class declared as follows (in vb.net)
<Serializable()> _ Public Class NumInfo Public n As String Public f As Integer Public fc As char() Public t As Integer
[Code]....
What am I doing wrong? For the record I tried replacing char() with string to see if it was the array causing problems but that didn't help either. I'm fairly new to web services. I tried replacing the custom object parameter with a primitive parameter just to check how things worked and it rendered a page with an input field and invoke button.
Recently, I tried to get my Web Service class to inherit from a custom base class that inherits from System.Web.Services.WebMethod instead of the System.Web.Services.WebMethod directly.
However, I've been getting Error 500.
Public Class Service1 Inherits BaseClass <System.Web.Services.WebMethod()> _ Public Function GetSessionID() As String GetSessionID = Me.Session.SessionID End Function End Class
public class BaseClass Inherits System.Web.Services.WebService public property Property1 as string public property Property2 as string
I can't seem to call a web service method from Ajax with both POST and GET.
Initially only the POST would work and GET would causes this error:
{"Message":"An attempt was made to call the method u0027getDatau0027 using a GET request, which is not allowed.","StackTrace":" at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}
I fixed that by adding this attribute: [ScriptMethod(UseHttpGet=true)] but now GET causes this error:
[code]....
So is it true that you can only use either POST or GET and not both from Ajax?
I could really use some help on this one. I've been fighting it now for several days and we are supposed to start testing early next week.I am subscribing to 4 web services all hosted by the same company. The integration with 1, 2 and 3 all went fine, but on the fourth I keep getting the very unhelpful error:
System.Web.Services.Protocols.SoapException = {"Server was unable to process request. ---> Object reference not set to an instance of an object."} [code]...
I've scenario where I want to insert data into database without post back. there are around 12 to 13 fields which i need to insert. I'm passing DTO from the client side which is actually Json object. Now the problem which i'm facing is how to convert that Json object which i got in webservice to the "class" (in my case class name is User) object.
[Code]....
In the above case AddNewUser method takes the object of User class. But i'm getting casting error. So how do I convert Json object to the "User" class object?
[WebMethod] [SoapHeader("_webServiceAuth")] public User GetUser(string username){ try { this._validationMethods.Validate(_webServiceAuth); User user = new User(username); [code]...
I have to keep a datacontext alive in a WCF service. This object is created on every call to the service, by the way decreasing performance. How could I keep this object alive with WCF.
I'm fairly new to .NET development so I might be missing something very simple here. I'm trying to set up a web service as a data item so that I can bind it to a control on my page. I was reading some tutorials about doing this in an earlier version which seemed very simple. All you had to do was add the web reference, create a data source and use the object type, pick the web service and enter the name of the call that would retrieve the data.
In 2008 the object data source type doesn't seem to be available anymore when creating a new item unde app_data. I get options for SQL Server, XML and XML schema. I've tried adding an existing source and picking each of the files generated for my web service reference, with no success. I suspect that I have to use one of the XML options, though at this point my web service is a simple thing that only returns some strings for prototyping purposes (I'm not the one writing the web service, just the front ends. Our other developer hasn't come up with a stub service yet). I know there must be some way to set a web service up as a business object so that you can bind it to a control like a gridview.
ClassA is a custom class generated from a "type" in oracle database. ClassB is a custom class generated from a "table of type ClassA" in Oracle database.
The exposed service includes a login procedure which gets a username as input parameter and returns object B. Debugging the login procedure I can see that the data is retrieved from the database but not printed in the wsdl..
[Code]....
My ClassB definition is as follows:
[XmlInclude(typeof(ClassB))] public class ClassB : INullable, IOracleCustomType, IXmlSerializable ...
similar definition holds for ClassA as well. the generated wsdl is :
<? xml version="1.0" encoding="utf-8" ?> <ClassB xmlns="http://tempuri/org" />
I'm kinda new to web services and want to make sure I am doing things correctly.
I have a custom object which has sub objects as well. (let's say Company object, sub object is collection of Employee objects)
I want the web service to return a collection of Company objects. Do I make the service return a Dataset and custom generate a dataset with datatables representing the different objects?
What is the best way to do this? I tried to just serialize it, but that doesn't seem to work either.
I tried this dll
[URL]
But the output XML doesn't seem to include the sub object.
we have an existing ASP.net application that is undergoing expansion. The new functionality is all written in Silverlight 4. As part of that expansion I gutted all the old Linq to SQL and put Entity Framework 4 into place. To do this I created a standard .net Class Library and added my edmx files there. Naturally, the business entities created by this cannot be used in Silverlight. So I created a Silverlight Class Library and added all the business entities to that Silverlight Class Library as linked files. I changed the name space to be the same.
So I have the following assembly / namespaces
Company.Project.Dal.csproj / Company.Project.Entities (.net 4 class library)
Company.Project.Entities.csproj / Company.Project.Entities (SL4 class library)
With this architecture I was able to share my business entities with my SL enabled web services, my asp.net projects, my silverlight projects. Really it's a beautiful thing.
Once this was done I added "message" classes to Company.Project.Dal and again shared them with the other entites using linked files. These messages are things like MyObjectRequest; they are classes that have properties that can set to the ID of the record in the database you want to get, a search string for filtering by last name, first name, etc. (This is in the style of the Web Service Factory if you're familiar with that.)
Finally I turned the whole message into a generic using a base class called EntityRequest
[code]...
I corrected this error and everything went well for a week until I had to make my first change to the service interface. I added a new operation contract, clicked the handy Update Service Reference on my client and boom.
I am trying to call web service from jquery..trying following way but i am not able to pass to complex type parameter to WCF service.My wcf function is as follows
<OperationContract()> <Web.WebGet(UriTemplate:="/GetData?strErrMsg={strErrMsg}&chrErrFlg={chrErrFlg}", ResponseFormat:=WebMessageFormat.Json, BodyStyle:=WebMessageBodyStyle.Wrapped)> _ Function GetData(ByRef strErrMsg As System.Collections.Generic.List(Of String), ByRef chrErrFlg As String) As String strErrMsg is System.Collections.Generic.List(Of String)
I am trying to call as follows
var Type; var Url; var Data; var ContentType; var DataType; var ProcessData; var parameters;
[code]...
And I am able to call other methods in same way having string and integer parameter.I have gone through this but didnt get anything. URL...
In my web app, if user clicks a button, I have to kick off a long running task. I have to keep the user informed about the status of execution of the task from time to time. To accomplish this, I create a thread on button click which makes a synchronous webservice call. The webmethod works on a long running task; while the main thread informs the users about the status of execution.
Currently the webmethod call times out in approximately 90 seconds. I want to increase the timeout to 10 mins. I tried setting <httpRuntime executionTimeout="600"/> along with debug="false"; but in vein. Can anyone tell me what I am missing?
i wrote a webmethod on webservice. it will do adding product to shoppingbasket. But it doesn't work. i used a class and its method in this webservice method. error is about it. my code are below: