Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > C# call to C++ static class raises NullReferenceException when web.config gets modifided

Reply
Thread Tools

C# call to C++ static class raises NullReferenceException when web.config gets modifided

 
 
AAguiar
Guest
Posts: n/a
 
      12-16-2003
I have an asp.net project where the code behind the aspx page calls a c#
class which makes calls to a managed static C++ class.
The C# class works fine when the asp net worker process starts, when it is
invoked by pressing "F5", or when the web.config file is modified.
In all these cases the web.config file contains <identity
impersonate="false" />.

The mysterious problem arrises when I set <identity impersonate="true"/> in
the web.config file.
In this case, each time the web.config file is modified , I get the error
NullReferenceException: Object reference not set to an instance of an
object.
When debugging the error raises at the point where c# class call for the
first time a function on the static c++ class.

If I restart de aspnet wroker process the error disappear, until I modify
again the web.config file.

Does anyone have any idea of why I get an NullReferenceException at this
point when I set <identity impersonate="true" /> in the web.config file and
the aspnet worker process gets recycled ?

Any help or direction regarding the resolution of this problem would be
greatly appreciated.

Thanks in advance.



 
Reply With Quote
 
 
 
 
Chris Jackson
Guest
Posts: n/a
 
      12-16-2003
Sounds like permissions. With impersonation, if you are using Windows
Authentication, that user token will be used to invoke that file. If you
aren't, then the user token for IIS will be used. In either case, you need
to make sure that the proper user token has access to the necessary
resources that you are trying to invoke.

--
Chris Jackson
Software Engineer
Microsoft MVP - Windows Client
Windows XP Associate Expert
--
More people read the newsgroups than read my email.
Reply to the newsgroup for a faster response.
(Control-G using Outlook Express)
--

"AAguiar" <(E-Mail Removed)> wrote in message
news:%23rafQH$(E-Mail Removed)...
> I have an asp.net project where the code behind the aspx page calls a c#
> class which makes calls to a managed static C++ class.
> The C# class works fine when the asp net worker process starts, when it is
> invoked by pressing "F5", or when the web.config file is modified.
> In all these cases the web.config file contains <identity
> impersonate="false" />.
>
> The mysterious problem arrises when I set <identity impersonate="true"/>

in
> the web.config file.
> In this case, each time the web.config file is modified , I get the error
> NullReferenceException: Object reference not set to an instance of an
> object.
> When debugging the error raises at the point where c# class call for the
> first time a function on the static c++ class.
>
> If I restart de aspnet wroker process the error disappear, until I modify
> again the web.config file.
>
> Does anyone have any idea of why I get an NullReferenceException at this
> point when I set <identity impersonate="true" /> in the web.config file

and
> the aspnet worker process gets recycled ?
>
> Any help or direction regarding the resolution of this problem would be
> greatly appreciated.
>
> Thanks in advance.
>
>
>



 
Reply With Quote
 
 
 
 
MSFT
Guest
Posts: n/a
 
      12-17-2003
Hi AAguiar,

Thank you for using Microsoft Newsgroup Service. Based on your description,
you are dealing with a ASP.NET web application. It seems that you called
one function in a Managed C++ class when the web application start. The
application runs well when you set the web.config's impersonate attribute
as false. However, when change it as ture, you found that there occured an
"NullReferenceException: Object reference not set to an instance of an
object" error when starting the web application.( Please correct me if my
understanding of your issue is not quite exact.)

If so, here is my suggestion on it:

1. As for the <identity impersonate="true"/> attribute in the ASP.NET
web.config file, if you set the authentication mode as "windows" in the
web.config file for asp.net application. the "impersonte" attribute will
determine under which account will the asp.net execute code. If you set as
false. I'll use the default process acount(MACHINE\ASPNET). If you set it
as true, the workprocess will execute under the account flow from the IIS
SERVER. Also, you can explicitly specify a certain account for the
workproecc to execute under.

here is the description in MSDN:
Another important security feature is the ability to control the identity
under which code is executed. Impersonation is when ASP.NET executes code
in the context of an authenticated and authorized client. By default,
ASP.NET does not use impersonation and instead executes all code using the
same user account as the ASP.NET process, which is typically the ASPNET
account. This is contrary to the default behavior of ASP, which uses
impersonation by default. In Internet Information Services (IIS) 6, the
default identity is the NetworkService account.

you can follow the link:
http://msdn.microsoft.com/library/en...sonation.asp?f
rame=true
to get more detailed info on impersonation in ASP.NET.

So, if you use the "impersonate" function(set it as true in web.config).
You should make sure that the user accounts which will be impersonated by
the workprocess should have enough priviliges. Otherwise, there'll occur
permission or privilige errors when the asp.net application run.

2. Based on your situation, since the problem occurs when you set
impersonation as true. I think it is most likey caused by the permission.
Just the account the workprocess under which doesn't have enough permission
to accomplish certain operation. You may have a try using different account
to test it(use some more advanced account) to see whether the problem
remain.

3. As you said that the problem occurs everytime you have modified the
web.config file and restart the process( do you mean you restart debugging
the application via F5 in VS.NET)? If so, since the ASP.NET application
will restart the whole application when the web.config file has been
modified. I believe the problem caused by something called when the web
application starts(such as at the Application_Start event). You may have a
further check to confirm this.

4.You also mentioned that you the problem is likely caused via the C++
class when one of its method is first called when the web application
starts. Then, I think maybe there occurs some permission error when the
executing the code in that method since the ASP.NET workprocess is
executing under the impersonated account( not the default aspnet account)
when you use impersonate=true. So please have a look at the function in the
c++ class. Maybe some operation in it failed so that a certain reference is
not set to a correct value, then the "NullReferenceException" occur.

Please try out the preceding suggestions and let me know whether thay help.



Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)

 
Reply With Quote
 
AAguiar
Guest
Posts: n/a
 
      12-17-2003
Thanks for your answer.

I've been debugging the code again (in VS.NET) and checked out the users
permission (with <authentication mode="Windows"> .. in web.config file)
and:
- The user that I'm using when impersonation is set to true have the
sufficient persmissions to access all resources.
- The problem only appears when I modify the web.config file which causes
the aspnet worker to be recycled.
- If I restart the aspnet worker proccess (aspnet_wp), the application
begins to work correctly again, it works fine (the user is always the same).
When I debug it, the debugger steps into the method correctly.
- The NullReferenceException ocurr at the point the c# class calls the
static c++ class, and not inside the method, it doesn't step into the method
(I tested it calling a dummy method and the error is the same, it doesn't
reach the inside the method), I think the Exception appears because the
static c++ class doesn't exist, is "null", or something like that.

It's very strange this behaviour... Any other guide or experience on this
problem is welcomed.

Thanks again.




"MSFT" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Hi AAguiar,
>
> Thank you for using Microsoft Newsgroup Service. Based on your

description,
> you are dealing with a ASP.NET web application. It seems that you called
> one function in a Managed C++ class when the web application start. The
> application runs well when you set the web.config's impersonate attribute
> as false. However, when change it as ture, you found that there occured an
> "NullReferenceException: Object reference not set to an instance of an
> object" error when starting the web application.( Please correct me if my
> understanding of your issue is not quite exact.)
>
> If so, here is my suggestion on it:
>
> 1. As for the <identity impersonate="true"/> attribute in the ASP.NET
> web.config file, if you set the authentication mode as "windows" in the
> web.config file for asp.net application. the "impersonte" attribute will
> determine under which account will the asp.net execute code. If you set as
> false. I'll use the default process acount(MACHINE\ASPNET). If you set it
> as true, the workprocess will execute under the account flow from the IIS
> SERVER. Also, you can explicitly specify a certain account for the
> workproecc to execute under.
>
> here is the description in MSDN:
> Another important security feature is the ability to control the identity
> under which code is executed. Impersonation is when ASP.NET executes code
> in the context of an authenticated and authorized client. By default,
> ASP.NET does not use impersonation and instead executes all code using the
> same user account as the ASP.NET process, which is typically the ASPNET
> account. This is contrary to the default behavior of ASP, which uses
> impersonation by default. In Internet Information Services (IIS) 6, the
> default identity is the NetworkService account.
>
> you can follow the link:
>

http://msdn.microsoft.com/library/en...sonation.asp?f
> rame=true
> to get more detailed info on impersonation in ASP.NET.
>
> So, if you use the "impersonate" function(set it as true in web.config).
> You should make sure that the user accounts which will be impersonated by
> the workprocess should have enough priviliges. Otherwise, there'll occur
> permission or privilige errors when the asp.net application run.
>
> 2. Based on your situation, since the problem occurs when you set
> impersonation as true. I think it is most likey caused by the permission.
> Just the account the workprocess under which doesn't have enough

permission
> to accomplish certain operation. You may have a try using different

account
> to test it(use some more advanced account) to see whether the problem
> remain.
>
> 3. As you said that the problem occurs everytime you have modified the
> web.config file and restart the process( do you mean you restart debugging
> the application via F5 in VS.NET)? If so, since the ASP.NET application
> will restart the whole application when the web.config file has been
> modified. I believe the problem caused by something called when the web
> application starts(such as at the Application_Start event). You may have a
> further check to confirm this.
>
> 4.You also mentioned that you the problem is likely caused via the C++
> class when one of its method is first called when the web application
> starts. Then, I think maybe there occurs some permission error when the
> executing the code in that method since the ASP.NET workprocess is
> executing under the impersonated account( not the default aspnet account)
> when you use impersonate=true. So please have a look at the function in

the
> c++ class. Maybe some operation in it failed so that a certain reference

is
> not set to a correct value, then the "NullReferenceException" occur.
>
> Please try out the preceding suggestions and let me know whether thay

help.
>
>
>
> Steven Cheng
> Microsoft Online Support
>
> Get Secure! www.microsoft.com/security
> (This posting is provided "AS IS", with no warranties, and confers no
> rights.)
>



 
Reply With Quote
 
MSFT
Guest
Posts: n/a
 
      12-18-2003
Hi AAguiar,

Thank you for the reply. Since the problem is a bit strange. I suggestion
that you first remove(comment) those code which call the static c++
class(include other code concerned with the c++ class). Then, try to see
whether the problem remain so that we can get whether the problem is
acutually caused by something within the C++ class.

Additionally, would you plesase set on the Application's Trace option so as
to get some Trace stack infos about the error. Maybe it will provide some
useful clues.

In the mean time, I'll do some further research on it to look for some more
clues.


Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)


 
Reply With Quote
 
MSFT
Guest
Posts: n/a
 
      12-22-2003
Hi AAguiar,

Have you had a chance to try my suggestion or have your problem been
resolved? Please let me know if you have any question on it. Thanks.

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)







 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
When gets the static initializer of a private static class exectuted? joes Java 3 01-09-2008 02:56 PM
referring to static fields of enclosing class from static inner class? bugbear Java 4 08-23-2006 08:26 AM
Instantiating a static class( Class with all static members - methods and variables) SaravanaKumar Java 6 10-19-2004 08:20 AM
RE: C# call to C++ static class raises NullReferenceException when web.config gets modifided Steven Cheng[MSFT] ASP .Net 11 01-23-2004 12:37 PM
RE: NullReferenceException in call from c# class to c++ static class when touch web.config file Steven Cheng[MSFT] ASP .Net 1 01-09-2004 12:26 PM



Advertisments