簡體   English   中英

ASP.NET在每個請求上重新編譯

[英]ASP.NET recompiles on every request

我有一個ASP.NET Webforms編譯的站點,可以在我的本地計算機上完美運行。 一旦站點被推送到實時服務器(在Windows Server 2012上運行IIS8的10台服務器的庫),站點將在每個請求上重新編譯。

如果我轉到臨時的ASP.NET文件目錄,那么該站點中的所有用戶控件都有App_Web dll以及所有二進制文件的.delete文件,這就是我認為每次都會導致appdomain重新啟動的情況。

App_Web_course.aspx.cdcab7d2.ijbbuqi7.dll
App_Web_course.aspx.cdcab7d2.ijbbuqi7.dll.delete

它偶爾會在某些服務器上運行正常,當我查看這些服務器上的臨時.NET文件時,.delete文件就不存在了。

我把頭發拉了出來,經過17年的發展,我以前從未見過它,似乎沒有任何押韻或理由。

更新:如果有其他人遇到此問題,請查看下面的答案以獲取我的解決方案。

我有一個問題的更新和解決方案。

在原始帖子時,我遺漏了文件位於SMB網絡共享上。 由於ASP.NET的fcnMode,這就是這種不斷重新編譯的原因。

進程監視器通過w3wp.exe為“FileChangeNotify”顯示了數千個請求,當它們訪問諸如“bin”之類的關鍵目錄時,它將導致重新編譯和應用程序重新啟動。

幸運的是,有一個單行解決方案。 在項目的web.config中,更改以下行以包含以下屬性:

<httpRuntime fcnMode="Disabled" />

這將阻止ASP.NET掃描您的網絡目錄以進行常量文件更改。

導致重新編譯的可能原因。

  • 您更新web.config
  • 您在根目錄上創建/刪除app_offline.htm文件。
  • 您可以創建/修改任何.aspx.aspx.cs文件
  • 您在App_Code文件夾上創建/修改文件
  • 您已將某些上載文件夾保留為無人參與狀態,並且用戶上傳了aspx文件。
  • 你在計算機上的時間/日期是錯誤的(回到幾年)

如果您無法在代碼上找到它或者不知道其他庫的功能,您可以使用進程監視器查看所有內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM