Abbiamo un'applicazione che utilizza i file .aspx di WebForm per quasi tutto. Latley utilizza RazorViews precompilati come un modo per ottenere funzionalità ottimali in pacchetti semplicemente rilasciando una nuova DLL nel nostro progetto. Ma ora abbiamo scoperto che le nostre viste precompilate sembrano essere in conflitto con i nostri VirtualPathProvider.Impossibile trovare il file PrecompiledApp.config quando si lavora con viste Razor precompilate e VirtualPathProviders
Durante il caricamento di VirtualPathProvider da DLL esterne, l'applicazione tenta di caricare PrecompiledApp.config per tutte le richieste (e non ce l'abbiamo). I fornitori sono carichi di riflessioni. Abbiamo alcuni VirtualPathProviders nello stesso progetto della registrazione e funzionano bene ma quando registriamo i provider da DLL esterne con HostingEnvironment.RegisterVirtualPathProvider
abbiamo questo problema.
Se aggiungiamo il file PrecompiledApp.config, tenta di ottenere _appstart.cshtml e così via. Dobbiamo avere tutti i file avranno sicuramente al di sotto prima di ottenere oltre l'exeption:
- PreCompiledApp.config
- _appstart.cshtml
- _PageStart.cshtml
- _ViewStart.cshtml
- Vista/_ViewStart.cshtml
- Views/Shared/_ViewStart.cshtml
- default.cshtml
Finiamo in default.cshtml e il resto dell'applicazione funziona. Dal momento che vogliamo utilizzare i file apsx come impostazione predefinita, questa non è una soluzione accettabile. Siamo anche preoccupati che ne emergano altri problemi poiché non abbiamo idea del perché questo sta accadendo.
abbiamo cercato in questo modo di caricare i nostri fornitori, ma abbiamo ancora ottenere lo stesso errore: http://sunali.com/2008/01/09/virtualpathprovider-in-precompiled-web-sites/
L'eccezione:
Could not find file 'C:\MyApp\PrecompiledApp.config'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.IO.FileNotFoundException: Could not find file 'C:\MyApp\PrecompiledApp.config'.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[FileNotFoundException: Could not find file 'C:\MyApp\PrecompiledApp.config'.]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +12899479
System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath) +2481
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) +229
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) +102
System.Web.Hosting.MapPathBasedVirtualFile.Open() +105
System.Web.WebPages.BuildManagerWrapper.IsNonUpdatablePrecompiledApp() +157
System.Web.WebPages.BuildManagerWrapper..ctor(VirtualPathProvider vpp, IVirtualPathUtility virtualPathUtility) +48
System.Web.WebPages.VirtualPathFactoryManager.<.cctor>b__6() +90
System.Lazy`1.CreateValue() +12776623
System.Lazy`1.LazyInitValue() +355
System.Web.WebPages.ApplicationStartPage.ExecuteStartPage(HttpApplication application) +131
System.Web.WebPages.WebPageHttpModule.StartApplication(HttpApplication application, Action`1 executeStartPage, EventHandler applicationStart) +98
System.Web.WebPages.WebPageHttpModule.InitApplication(HttpApplication application) +75
System.Web.WebPages.WebPageHttpModule.Init(HttpApplication application) +268
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +575
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +352
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +407
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +375
[HttpException (0x80004005): Could not find file 'C:\MyApp\PrecompiledApp.config'.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11700992
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4869221
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272