When I first request pages from my ASP.NET MVC 3 website it appears to suffer a delay, but on subsequent requests it is instantaneous. I have no caching on pages so the second request is pulled from the server. Is there any way to preload the whole app?
There is a new Auto-Start feature in IIS 7.5 and ASP.NET 4.0 which allows you to load all application sin memory when the server starts thus avoiding the delay. For all previous versions you could schedule an automated request when the server starts in order to load the application in memory so that subsequent requests be faster.
How to: Precompile ASP.NET Web Site Projects
Related
Does kestrel support the applicationInitialization feature ?
This is the feature were you can define a page (or pages) that will will be executed after the application starts. Basically to warm up the application.
If it is not supported is there an equivalent for Kestrel ?
If we turn back the time, most people use scripts to ping pages so their web applications can be warmed up. Later Microsoft developed Application Initialization module for IIS 7.5 and above to simplify that (and with some extra functionality like showing a warning page).
However, if we change the scope to Kestrel, then Microsoft has no plan yet to implement similar functionality, as the GitHub threads like this revealed.
You can use pinging as a workaround, and wait to see if Microsoft changes their minds. They did so when porting URL Rewrite functionality to Kestrel, as a middleware.
Again, ASP.NET Core is open source, so maybe someone can step in to implement such a middleware.
I've read from Scott Hanselman that a self-host console application of ASP Web API has 50% speed efficiency over a traditional ASP.NET MVC Web API project, since it doesn't have as much internal overhead.
My question is, what if I want to host a Web API in IIS? Can't use a Console Application, but still want to reap the benefits of not having the entire ASP.net framework overhead for only needing a simple web API?
It is 'theoretically' possible with OWIN. Some one asked the same question here.
I developed an website in ASP.NET MVC 3.0 with NHibernate its deployed on server now my IT infra team informed that this site is taking upto 1.5 GB Memory (RAM) even when no user hits are their.
I asked them for server/IIS error to check wether any URL goes fail and also asked for an minimum benchmark of Memory for an ASP.NET MVC 3.0 website.
Can any one tell me what should i check for why this website is taking that much of memoey?
Or is it normal for ASP.NET MVC 3.0 WEbsite.
What is the minimum limit for such website.?
Edited:
IT Infra team gives me This File.can any one one tell me whats the problem
Let's say I have several sites I want to create - all with separate domain names. Each of these sites uses the same back-end, and the configured all from the same back-end.
As such, I was wondering if I could do the following:
In each of the sites' DNS, point them all to the same site.
So for example:
site1.com, site2.com, site3.com ---> mymainbackend.com
Then at mymainbackend.com, I would read the incoming Url, and serve up the appropriate content based on that incoming URL.
One issue with this is that all the sites would reside on the same app pool, but a work-around would be to have batched pools.
The architecture for this is IIS 7.5, MVC3, ASP.Net 4.0.
Are there any SEO got'cha's with this type of scenario? Are there better solutions?
I run 4 different domains from the same hosting using the routing module to decide what content to serve.
SEO wise there should be no specific issues.
It would be the same as hosting multiple websites on the same server and the potential issues that may raise.
Lets assume Memory Job is set or clean cache, I know AppFabric and I just use cache as example.
I have a ASP.net MVC3 deployment with 4 instances in Azure at this moment.
Each instance has multiple websites, defined by ServiceDefinition.csdef Sites section, 18 of them. It's foldered as 1 to 17 in sitesroot in .cspkg package.
I want to know, is there any mechanism to loop all Azure Instances, then loop all IIS sites to call a MVC Controller?
The simple answer is no, there is no built in functionality that will iterate through all of your sites on all of your instances.
Presuming you want to do this as you want to tell these sites that there has been a change to some data that is in the cache, the simplest way around this is to have each site poll for updates to your cache, or just expire data out of the cache after a certain period of time.
The more complicated option is to give each site and internal endpoint, then when the site starts up it registers this internal end point with a cache controller service. When some data that can be cached is updated, the cache controller service communicates with all of the endpoints that are registered with it them to refresh their cache.