2012-05-03 21 views
23

WebForms .aspxファイルを使用したアプリケーションがあります。 Latleyでは、プロジェクトで新しいdllを削除するだけで、パケット化された機能を得るためのプリコンパイル済みのRazorViewを使用しています。しかし、今は、プリコンパイルされたビューがVirtualPathProvidersと競合しているように見えます。プリコンパイルされたRazorビューとVirtualPathProvidersを使用しているときに、PrecompiledApp.configファイルが見つかりません

外部のDLLからVirtualPathProvidersをロードすると、アプリケーションがすべての要求に対してPrecompiledApp.configをロードしよう(と我々はそれを持っていないでください)。プロバイダにはリフレクションがロードされます。登録と同じプロジェクトにいくつかのVirtualPathProvidersがあり、正常に動作しますが、外部DLLからプロバイダにHostingEnvironment.RegisterVirtualPathProviderを登録すると、この問題が発生します。

ファイルにPrecompiledApp.configを追加すると、_appstart.cshtmlなどを取得しようとします。

  • PrecompiledApp.config
  • _appstart.cshtml
  • _PageStart.cshtml
  • _ViewStart.cshtml
  • ビュー/ _ViewStart.cshtml
  • :私たちはexeption過ぎて取得する前に、以下のすべてのtheeseのファイルを持っている必要があります
  • ビュー/共有/ _ViewStart.cshtml
  • default.cshtml

私たちはdefault.cshtmlになり、残りのアプリケーションは動作します。デフォルトとしてapsx-filesを使用したいので、これは容認できる解決策ではありません。なぜこれが起こっているのかわからないので、より多くの問題が出てくることも懸念しています。

私達は私達のプロバイダをロードするこの方法を試してみましたが、我々はまだ同じエラーを取得: http://sunali.com/2008/01/09/virtualpathprovider-in-precompiled-web-sites/

例外:

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 

答えて

3

はあなたのVirtualPathProviderのFILEEXISTSがfalseを返すことをあなたは確かにありますPrecompiledApp.config?

それが実際にオープンを呼び出す前に、IsNonUpdatablePrecompiledAppフラグが起こってから、あなたの例外を防ぐために、VPPにFILEEXISTSを呼び出します。

関連する問題