簡體   English   中英

文件“blahblah.aspx”尚未預編譯,無法請求

[英]The file 'blahblah.aspx' has not been pre-compiled, and cannot be requested

是的,我知道,這個問題已經被問過很多次了。

但這並不完全相同。 其實我認為錯誤信息是准確的!

通常,當您查看已發布的 ASPX 文件時,您只會看到“這是預編譯工具生成的標記文件,不應刪除!”。

就我而言,在構建和發布之后,當我查看已發布的頁面時,我會看到完整的源代碼。

我正在使用新安裝的 VS2012 副本,所以顯然有些地方不太對勁。

有什么建議么?

謝謝 :)

過去幾天我一直在努力解決這個問題。 至少在我的情況下,錯誤消息完全是誤導性的,與預編譯的網站無關。 有很多文章或帖子提供了許多不同的答案,只會增加混亂。 我個人認為這個錯誤主要是由於缺少引用或版本控制不正確引起的。 為了盡快解決問題,您必須對此進行排除,或以其他方式修復缺失/錯誤的引用。

為此,您需要使用名為“Assembly Binding Log Viewer”的工具。 此工具將告訴您哪些引用丟失或版本錯誤。 如果缺少/不匹配的參考,那么繼續修復它; 否則你需要做其他魔術技巧,比如檢查應用程序池是32位還是權限。

腳步:

  1. 在您的服務器上創建以下文件夾

    C:\\ fuslog C:\\ fuslog \\ logs

  2. 將程序集綁定日志查看器復制到您的服務器C:\\ fuslog:

    你可以在這樣的位置找到該程序

    C:\\ Program Files(x86)\\ Microsoft SDKs \\ Windows \\ v7.0A \\ Bin \\ fuslogvw.exe

    您可能需要查看“Program Files”而不是“Program Files(x86)”或查看不同的版本而不是“v7.0A”(某些較新的版本可能不適用於較舊的Windows版本)

  3. 在服務器上執行fuslogvw.exe(您可能需要右鍵單擊並以管理員身份運行)

  4. 點擊“設置...”

  5. 確保選中“將日志綁定失敗到磁盤”

  6. 選中Enable custom log path並在框中輸入以下內容:C:\\ fuslog \\ logs

  7. 單擊“確定”

  8. 回收/重置您的應用程序池以強制執行新的綁定

  9. 單擊“刷新”。 現在,您可以在此處查看失敗的綁定

  10. 找到確切綁定的更好方法是轉到c:\\ fuslog \\ logs \\ Default。 在這里,您可以找到確切的綁定失敗。 有些是無關緊要的,你需要通過反復試驗來找到關鍵的一個。 我的是以下失敗:

      System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35 

我通過在我的網站web.config中添加以下條目來修復此問題:

<configuration>
    ...
    <runtime>
        ...
        <!-- Added this entry to fix the issue -->
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.0" />
        </dependentAssembly>
        ...
    </runtime>
    ...
</configuration>

我希望這有助於其他人快速解決問題。

通常,當您查看已發布的ASPX文件時,您只看到“這是預編譯工具生成的標記文件,不應刪除!”。

好吧,不是真的“正常” - 你必須明確地設置它。

通常的方式 - 打開Visual Studio,右鍵單擊項目,“發布”,選擇配置文件

檢查配置文件設置,或者根據需要創建新配置文件並(重新)設置為您想要的配置文件。

設置的屏幕截圖,您可以預編譯,“可更新”或“不可更新”(完全編譯,您可以看到上面提到的注釋)等。

如下所示,“正常”(默認)設置是“可更新的”。 取消選中==所有內容都已編譯 - 甚至(cs / vb)html,aspx等(文件中沒有可查看的源)

發布配置文件設置

心連心...

最后,我發現了問題。 如果您使用像我這樣的MVC框架,請更新您的MVC版本。在我的情況下,我將MVC 4.0.0.0更改為4.0.0.1並檢查所有項目引用的“本地復制”屬性為“True”。 之后我的問題解決了。 請查看所有配置文件中的MVC版本(4.0.0.0-> 4.0.0.1)

並注意asp編譯器警告消息。

我在我們的應用程序中遇到的問題是一個骯臟的部署目錄。 一個團隊已將視圖從 ASPX 或 ASCX 遷移到 Razor,但應用程序仍希望加載 ASCX 文件,即使它已脫離源代碼控制。 部署目錄仍然有 Web 窗體文件,因此在每次部署時清除目錄可以解決問題。 您可以采取的下一步是清除Global.asax.cs中的視圖引擎,並在 WebForms 之前注冊 Razor 視圖引擎,如下所示:

protected void Application_Start(object sender, EventArgs e) {
    ViewEngines.Engines.Clear();
    ViewEngines.Engines.Add(new RazorViewEngine());
    ViewEngines.Engines.Add(new WebFormViewEngine());
}

暫無
暫無

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

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