We want to switch a web server from Windows 2003 to Windows 2003 Enterprise (64 bits) to use 8GB of RAM. Will IIS 6.0 and an ASPNET 1.1 application be able to benefit from the change?
Since ASP.Net 1.1 has no x64 support, you are limited to running IIS 6 using 32 bit worker processes. The /3GB switch doesn't do anything on x64, but x64 natively gives 32bit processes 4 GB instead of 2GB, so you will have more memory available for your worker proces.
You will need to set the AppPools to 32 bit:
cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1
You could consider tweaking the ASP.net memory from 60% of the application to 80%, which we've had some success.
<system.web>
<processModel memoryLimit="80" />
</system.web>
This can stress the app pool when you get up into the 1.2GB to 1.6 GB range.
Other things to consider is that most ASP.Net 1.1 applications have no issues when run in a 2.0 application pool, allowing you to easily convert your 1.1 32 bit application to a 2.0 64 bit application. This doesn't require any recompilation, just change the app pool to 2.0, then switch to x64 using the above ADSUTIL.VBS script (set to 0 rather than 1).
My understanding is that there was a virtual address space limitation of 3 GB in ASP.NET 1.1, and that it was never made 64 bit compatible, though 2.0 was.
You can get IIS 6.0 to run 32 bit (i.e. ASP.NET 1.1) on the 64 OS, but it will be in a 32 bit mode (along with anything else hosted, including ASP.NET 2.0 sites).
Microsoft article on switching between 32 bit and 64 bit
The memory limit is 2GB unless you use the /3GB switch on the process which will use 1GB of the kernel space for the process itself. The only way to go beyond 3GB with IIS is to run the 64-bit version.
Related
Around June 1th. 2017 our rdlc reports suddenly runs very slow.
A small report returning approx 100 rows that is rendered in a tablix makes the IIS go to 100% for approx 9-10 seconds.
The CPU increase happens after the report data has been received and IIS starts rendering the report.
The issue exists on Windows Server 2016 and Windows 10 (iisexpress and iis) environments, while the same report runs normally on Windows Server 2012 only boosting IIS CPU for less than one second.
Microsoft ReportViewer is version 11.0 and .Net version 4.6.1648.0.
We have updated Windows Server 2012 to .Net version 4.7.2053.0 and it's still running fast.
Windows 10 is also updated to version 4.7.2053 and it's still slow (high CPU load).
All web.config settings is the same on all machines and AppPool's is configured the same.
We have tested with ReportViewer version 12 and it's the same issue (slow on Win2016/Win10, fast on Win2012).
We suspect that the issue is related to IIS or .NET or some other Microsoft module.
Any others having the same issue? Any ideas?
Finally found the reason for the slow reports!
The web.config was missing
<trust legacyCasModel="true" level="Full"/>
With LegacyCasModel to true the server respond in 1.14 second.
Without LegacyCasModel response time is 11.79 seconds and one CPU is using 100% in this period!
LegacyCasModel had been removed due to other functionality, but had no idea that this could have so severe impact on performance.
Hope it helps others in same situation.
I am working on a Classic ASP application. It used dlls to upload and download files to web server.
FunctionUpload.dll is registered using the regsvr32.exe command. It works fine in Windows 2003 server , 32 bit OS with IIS 6.
Now the server is upgraded to Windows 2008 64 bit OS with IIS 7.5. I registered the dll using regsvr32.exe command in 64 bit OS. ( regsvr32.exe in C:\Windows\SysWOW64 folder using Admin login)
When the ASP code tried to create an object of that dll it fails.
Set download = Server.CreateObject("FunctionUpload.File")
Please let me know what steps need to be done to access the dll from ASP code on a server with windows 2008 64 bit OS with IIS 7.5?
How to check if the dll is registered properly on a 64 bit OS?
Should I make any changes in the IIS 7.5 settings to invoke that dll?
Thanks
Ashok
you have to enable 32-bit applications in your iis under your application pool
To deploy ASP.Net web application in a 64 bit IIS 7 web server, Should i compile in x64 or Any CPU mode. I know that both is going to work but is there any performance impact on choosing one over the other ?
Only compile for x64-only if you absolutely need it. There shouldn't be any noticeable performance issues.
My development machine is Win XP Pro 32 bit and production machine is Windows Server 2008 (64 Bit) with IIS 7. On my development machine I want to compile ASP.NET (Using aspnet compiler) to 64 bit byte code.
Can anyone please tell me how to do that? Please do not suggest any way to run 32 bit application on 64 bit environment.
I want 64 bit application to be compiled on 32 bit machine so that when it runs it will take full advantage of 64 bit O/S without any emulation.
Leave the target platform at AnyCpu and .NET will automatically run natively on 64bit when executed on a 64Bit operating system
Clarification:
(this started out as a comment but I thought it might be interesting for the question as well)
Actually you never compile to a special architecture. You always compile to IL.
That's something like Java Bytecode. And that bytecode is the same for 32 bit and 64 bit.
The Virtual Machine (.NET Framework) on the machine the code gets executed then compiles the IL to actual machine code while running (through the Just In Time compilation). So, no matter where you compile, you'll always end up in IL that's bit-ignorant.
The setting in .NET is only an instruction in IL that tells the JIT (Just in Time compiler) to specifically use 32bit/64 bit. By flipping that one bit in your assembly you could still execute it in AnyCpu or x64 without recompilation.
This setting is only used and needed in case you call out to native code that isn't bit-ignorant (when interacting with COM components or doing p/invoke calls)
There's an option in Visual Studio 2013 now to direct IIS Express (which is usually used for debug) to run in 64 bit mode.
It's at Tools -> Options -> Projects and Solutions -> Web Projects -> Use the 64 bit version of IIS Express…
.net apps will re-target themselves for the target machine environment assuming that you didn't specifically choose to compile in 32-bit mode. This can be found under the project build options.
I am having issues running the chart control on our 64 bit machine. I get the following error...
Could not load file or assembly 'AspnetChart' or one of its dependencies. An attempt was made to load a program with an incorrect format.
The machine I am running this on is a Windows Server 2003 Enterprise x64 Edition SP2 Intel(R) Xeon(R) CPU E5405 # 2.00 GHz w/ 4.00 GB RAM
The chart control works fine on our 32 bit Windows XP Professional SP3 and Windows Server 2003 Standard Edition SP2 machines, but not when deployed to the 64 bit machine.
I tried to change the Platform target to x86, but that didn't seem to help. I also tried signing the dll and putting it in the GAC, but that didn't help.
Any thoughts, suggestions?
It sounds to me like you have a 32 bit DLL. In IIS 7 it's possible to run 32-bit and 64-bit processes simultaneously. But in IIS 6 you can only do one or the other. For running 32-bit applications on IIS 6 (64-bit windows) check out this Microsoft article.