S
Sathyaish
I've written a Web Service that has main service class. Let's call the
main class that exposes the service interface as Service1.
So, we have:
public class Service1: System.Web.Services.WebService
{
//code
}
I also have a business object that I am going to name BusinessObject,
for example's sake. This object is built in the service module/dll as a
class like so:
namespace BusinessObjects
{
public class BusinessObject
{
private SomeOtherClass mReferenceTypeMember;
//the field mReferenceTypeMember is exposed through a property
called ReferenceTypeMember
//code
public BusinessObject()
{
//nothing for now
}
}
}
Note that there is only one default ctor for the BusinessObject class
and that doesn't do anything.
I compile. Build a DLL. Then I add a test project to this project. I
add a Web Reference in the Test project to point to the asmx for the
above-mentioned service. The test project and the service are both a
part of the same solution. The test project is created to test the
service.
In the test project I do,
//call the default constructor
TheAliasOfTheWebReference.Service1.BusinessObject bo = new
TheAliasOfTheWebReference.Service1.BusinessObject();
bo.ReferenceTypeMember.SomeValueTypeMember = "Value";
I get an object not set to an instance exception. Reasonable!
So, I go back to the service asmx.cs file and go straight to the class
BusinessObject and modify the default constructor to do this:
namespace BusinessObjects
{
public class BusinessObject
{
private SomeOtherClass mReferenceTypeMember;
//the field mReferenceTypeMember is exposed through a property
called ReferenceTypeMember
//code
public BusinessObject()
{
this.mRefrenceTypeMember = new SomeOtherClass();
}
}
}
Then, I rebuild the service.
I go to the test project. I delete the old Web Reference. I add a new
Web Reference to the same DLL (I've burnt my fingers there in not
doing that).
I insert a breakpoint at the following line
//call the default constructor
TheAliasOfTheWebReference.Service1.BusinessObject bo = new
TheAliasOfTheWebReference.Service1.BusinessObject();
in the test project.
I expect it to step through the source code in my service. It doesn't.
And it still throws the object instance set to nothing exception.
What gives?
main class that exposes the service interface as Service1.
So, we have:
public class Service1: System.Web.Services.WebService
{
//code
}
I also have a business object that I am going to name BusinessObject,
for example's sake. This object is built in the service module/dll as a
class like so:
namespace BusinessObjects
{
public class BusinessObject
{
private SomeOtherClass mReferenceTypeMember;
//the field mReferenceTypeMember is exposed through a property
called ReferenceTypeMember
//code
public BusinessObject()
{
//nothing for now
}
}
}
Note that there is only one default ctor for the BusinessObject class
and that doesn't do anything.
I compile. Build a DLL. Then I add a test project to this project. I
add a Web Reference in the Test project to point to the asmx for the
above-mentioned service. The test project and the service are both a
part of the same solution. The test project is created to test the
service.
In the test project I do,
//call the default constructor
TheAliasOfTheWebReference.Service1.BusinessObject bo = new
TheAliasOfTheWebReference.Service1.BusinessObject();
bo.ReferenceTypeMember.SomeValueTypeMember = "Value";
I get an object not set to an instance exception. Reasonable!
So, I go back to the service asmx.cs file and go straight to the class
BusinessObject and modify the default constructor to do this:
namespace BusinessObjects
{
public class BusinessObject
{
private SomeOtherClass mReferenceTypeMember;
//the field mReferenceTypeMember is exposed through a property
called ReferenceTypeMember
//code
public BusinessObject()
{
this.mRefrenceTypeMember = new SomeOtherClass();
}
}
}
Then, I rebuild the service.
I go to the test project. I delete the old Web Reference. I add a new
Web Reference to the same DLL (I've burnt my fingers there in not
doing that).
I insert a breakpoint at the following line
//call the default constructor
TheAliasOfTheWebReference.Service1.BusinessObject bo = new
TheAliasOfTheWebReference.Service1.BusinessObject();
in the test project.
I expect it to step through the source code in my service. It doesn't.
And it still throws the object instance set to nothing exception.
What gives?