[英]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.