[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 463
  • Last Modified:

asp.net 32 bit 64 bit question

I am running what is supposed to be a 64 bit .net web application. When I run this command:

aspnet_regiis.exe –i

I get this response:

The error indicates that IIS is in 64 bit mode, while this application is a 32 bit application and thus not compatible.

Any Ideas on how to fix the problem or determine if the application is really 64 or 32 bit?
0
jimmylew52
Asked:
jimmylew52
  • 8
  • 5
1 Solution
 
käµfm³d 👽Commented:
Keep in mind that what is deployed on your server isn't actually machine code--it's IL code. IL code gets compiled on-the-fly to the host machine's architecture. Now, if you are running a 64-bit machine, but you need to run as 32-bit--usually for libraries that were coded as 32-bit (like Oracle libraries)--then you can tell .NET to prefer to run the library as 32-bit code rather than 64-bit. You do this by specifying a configuration of x86 (or x64, depending) in your project's properties.

e.g.

Screenshot
0
 
jimmylew52Author Commented:
How would I tell if the libraries on the server were compiled for 32 bot or 64 bit? Is there any way to tell?
0
 
käµfm³d 👽Commented:
They're not compiled to either--they're compiled to IL code. If you want to see what architecture the executable (should) will be compiled to, you can use the CorFlags utility that comes with the .NET Framework. Pass the utility the path to the assembly with no other aruments:

e.g.

C:\>corflags.exe C:\path\to\assembly.dll
C:\>corflags.exe C:\path\to\assembly.exe

Open in new window


You will get output along the lines of:

Screenshot
In the screenshot, I have compiled a DLL as "Any CPU", "x86", and "x64", respectively. You will note that there is a difference in the "PE" and "CorFlags" fields. Both AnyCPU and x86 show a PE value of "PE32"; the x64 shows "PE32+". "PE32+" always indicates 64-bit. For the other two values you have to look at the value of the CorFlags. If its value is 0x1, then you have an assembly that can run on either x86 or x64--the runtime compiler on the host machine will make that determination. If its value is 0x3, then the assembly will be compiled as x86. The "32BITREQ" field also reinforces this.
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
jimmylew52Author Commented:
I get this error:

corflags.exe is not recognized as an internal or external command.

Dotnet 4.0 is installed but a search of the system doesnot find corflags
0
 
käµfm³d 👽Commented:
My fault:  I misread the documentation. You can acquire that utility by installing the Windows SDK.
0
 
jimmylew52Author Commented:
So if this is the result of the command for the .dll files:

Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32
CorFlags  : 1
ILONLY    : 1
32BIT     : 0
Signed    : 0

The web app is compiled for 32 bit and not 64 bit?
0
 
käµfm³d 👽Commented:
That means it can run on either architecture--the runtime compiler will decide how to compile the IL code into machine code.
0
 
jimmylew52Author Commented:
That being the case, why am I getting this error?

The error indicates that IIS is in 64 bit mode, while this application is a 32 bit application and thus not compatible.
0
 
käµfm³d 👽Commented:
What is the exact error message?
0
 
jimmylew52Author Commented:
exact command and error

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -i -enable
The error indicates that IIS is in 64 bit mode, while this application is a 32 b
it application and thus not compatible.
0
 
jimmylew52Author Commented:
The service is compiled as a 32 bit or 64 bit service. It is currently installed in

Program Files (x86)      and is running as a 32 bit service.  If I uninstall and install in

Program Files       will it run as a 64 bit service?
0
 
jimmylew52Author Commented:
No, that will not make a difference.

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -i -enable

should be run from

C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis -i -enable
0
 
jimmylew52Author Commented:
Thanks for your assistance
0

Featured Post

Learn to develop an Android App

Want to increase your earning potential in 2018? Pad your resume with app building experience. Learn how with this hands-on course.

  • 8
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now