Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / Web Services / October 2005

Tip: Looking for answers? Try searching our database.

DIME: Attachments.Add - Object reference not set to an instance of an object.

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Joseph Geretz - 01 Sep 2005 19:14 GMT
Here's my first attempt at DIME (code below signature). I'ts basically
straight out of Microsoft's online sample:

For some reason, the statement

respContext.Attachments.Add(dimeAttach);

trips the following error:

Object reference not set to an instance of an object.

I've seen some of the solutions to this problem but they don't seem to
apply. I've gone to Project | Right Click | WSE 2.0 | General and confirmed
that both Enable this project for Web Service Enhancements and Enable
Microsoft Web Service Enhancement SOAP Extension are checked. (Actually, I
did not set these explicitly. I simply added a reference to
Microsoft.Web.Services2 from C:\Program Files\Microsoft
WSE\v2.0\Microsoft.Web.Services2.dll. Subsequently when diagnosing this
problem, I came across this dialog and saw that these options were both
enabled.

Inspiration! A minimum of debugging shows that immediately after executing

SoapContext respContext = ResponseSoapContext.Current;

respContext shows up as <undefined value>

I'm testing this function through the default Web Page which is provided as
a test for Web Services. Can DIME be tested via a Browser request? Or do I
actually have to build a software client to test this?

Thanks for any help you can provide!

- Joe Geretz -

[WebMethod]
 public int DropDIMEOnMe(string FileSpec)
 {
     SoapContext respContext = ResponseSoapContext.Current;
     DimeAttachment dimeAttach = new DimeAttachment("file/unknown",
TypeFormat.MediaType, FileSpec);
     respContext.Attachments.Add(dimeAttach);
     return respContext.Attachments.Count;
 }
Joseph Geretz - 01 Sep 2005 21:25 GMT
It was a nice thought, but no dice.

> Inspiration! A minimum of debugging shows that immediately after executing
>
[quoted text clipped - 5 lines]
> as a test for Web Services. Can DIME be tested via a Browser request? Or
> do I actually have to build a software client to test this?

I built a software client to test this. When stepping through this line of
code in the IDE

SoapContext respContext = ResponseSoapContext.Current;

ResponseSoapContext.Current evaluates to <undefined value>. Naturally, this
value is passed along to respContext.

Obviously, I'm not going to get very far until I can get ahold of a valid
ResponseSoapContext. What am I missing?

Thanks for your help!

- Joe Geretz -

> Here's my first attempt at DIME (code below signature). I'ts basically
> straight out of Microsoft's online sample:
[quoted text clipped - 40 lines]
>      return respContext.Attachments.Count;
>  }
Joseph Geretz - 01 Sep 2005 21:53 GMT
Maybe something wrong with my Web.Config file (included below)? For some
reason the ASP.NET runtime isn't providing my Web Service with a
ResponseSoapContext reference. Why not?

Thanks for your help,

- Joe Geretz -

<?xml version="1.0" encoding="utf-8"?>
<configuration>

 <configSections>
   <section name="microsoft.web.services2"
type="Microsoft.Web.Services2.Configuration.WebServicesConfiguration,
Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35" />
 </configSections>

 <system.web>
   <webServices>
     <soapExtensionTypes>
       <add type="Microsoft.Web.Services2.WebServicesExtension,
Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35" priority="1" group="0" />
     </soapExtensionTypes>
   </webServices>
 </system.web>

 <microsoft.web.services2>
   <diagnostics>
     <detailedErrors enabled="true" />
   </diagnostics>
 </microsoft.web.services2>

 <compilation defaultLanguage="c#" debug="true" />
 <customErrors mode="RemoteOnly" />
 <authentication mode="Windows" />
 <identity impersonate="true" userName="" password="" />
 <authorization>
   <allow users="*" />
 </authorization>
 <trace enabled="false" requestLimit="10" pageOutput="false"
traceMode="SortByTime" localOnly="true" />
 <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false" timeout="20" />
 <globalization requestEncoding="utf-8" responseEncoding="utf-8" />

</configuration>

> It was a nice thought, but no dice.
>
[quoted text clipped - 69 lines]
>>      return respContext.Attachments.Count;
>>  }
Antonio Dias - 31 Oct 2005 11:11 GMT
> It was a nice thought, but no dice.
>
[quoted text clipped - 67 lines]
>>      return respContext.Attachments.Count;
>>  }

i don't know if this is you're problem, but you have to remember that if
you are sending a file from the Client application you have to use the
RequestSoapContext.Current from the proxy. And on the Web Service you
use the ResponseSoapContext.Current property.

So it would be something like this:
Client:

<code>

WebbService proxy = new WebService();
SoapContext ctx = proxy.RequestSoapContext.Current;

/* build attach here */

ctx.Attachments.Add (attach);
proxy.MethodCall();

</code>

WebService:

<code>

public void MethodCall()
{
    SoapContext ctx = RequestSoapContext.Current;
    DimeAttachment = ctx.Attachments[0];
    ...
}
</code>
Another thing is you have to verify in the client if the proxy class
derives from Microsoft.Web.Services2.WebServicesClientProtocol.
Otherwise you wont have access to the SoapContext
Joseph Geretz - 07 Sep 2005 03:25 GMT
I have got this figured out now. Evidently, when you run client and
webservice projects in a signle solution, Visual Studio does not create the
proxy. I removed the webservice project and instead added a reference to the
webservice to the client project; Voila! Visual Studio created the proxy
class for me. Of course, I still had to tweak the proxy class, but getting
the proxy class created was 90% of the solution.

- Joe Geretz -

> Here's my first attempt at DIME (code below signature). I'ts basically
> straight out of Microsoft's online sample:
[quoted text clipped - 40 lines]
>      return respContext.Attachments.Count;
>  }
Antonio Dias - 31 Oct 2005 10:55 GMT
> Here's my first attempt at DIME (code below signature). I'ts basically
> straight out of Microsoft's online sample:
[quoted text clipped - 40 lines]
>       return respContext.Attachments.Count;
>   }

if you test the web service from the browser the ResponseContext is
always null. the best way to test is making a test application. you do
have to build a client.

Rate this thread:







Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.