Я использую маршрутизацию с моим приложением ASP.NET WebForms, используя технику, описанную Филом Хааком:
Это хорошо работает большую частьоднако время от времени первый вызов System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath
занимает десятки секунд для возврата.
Это происходит следующим способом:
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
LapTimer lapTimer = new LapTimer();
string virtualPath = this.GetSubstitutedVirtualPath(requestContext, lapTimer);
if (this.CheckPhysicalUrlAccess && !UrlAuthorizationModule.CheckUrlAccessForPrincipal(virtualPath, requestContext.HttpContext.User, requestContext.HttpContext.Request.HttpMethod))
throw new SecurityException();
IHttpHandler page = BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page)) as IHttpHandler;
if (page != null)
{
//Pages that don't implement IRoutablePage won't have the RequestContext
//available to them. Can't generate outgoing routing URLs without that context.
var routablePage = page as IRoutablePage;
if (routablePage != null)
routablePage.RequestContext = requestContext;
}
return page;
}
В то же время, что и этот Iобратите внимание (используя диспетчер задач), что процесс с именем csc.exe , компилятор C #, занимает 10% -50% моего процессора.
Кто-нибудь может подсказать, почему это происходит?