protected virtual WebPageBase CreatePageFromVirtualPath(string virtualPath, HttpContextBase httpContext, Func<string, bool> virtualPathExists, DisplayModeProvider displayModeProvider, IDisplayMode displayMode)
{
try
{
DisplayInfo resolvedDisplayInfo = displayModeProvider.GetDisplayInfoForVirtualPath(virtualPath, httpContext, virtualPathExists, displayMode);
if (resolvedDisplayInfo != null)
{
var webPage = VirtualPathFactory.CreateInstance<WebPageBase>(resolvedDisplayInfo.FilePath);
if (webPage != null)
{
// Give it its virtual path
webPage.VirtualPath = virtualPath;
webPage.VirtualPathFactory = VirtualPathFactory;
webPage.DisplayModeProvider = DisplayModeProvider;
return webPage;
}
}
}
catch (HttpException e)
{
// If the path uses an unregistered extension, such as Foo.txt,
// then an error regarding build providers will be thrown.
// Check if this is the case and throw a simpler error.
BuildManagerExceptionUtil.ThrowIfUnsupportedExtension(virtualPath, e);
// If the path uses an extension registered with codedom, such as Foo.js,
// then an unfriendly compilation error might get thrown by the underlying compiler.
// Check if this is the case and throw a simpler error.
BuildManagerExceptionUtil.ThrowIfCodeDomDefinedExtension(virtualPath, e);
// Rethrow any errors
throw;
}
// The page is missing, could not be compiled or is of an invalid type.
throw new HttpException(String.Format(CultureInfo.CurrentCulture, WebPageResources.WebPage_InvalidPageType, virtualPath));
}