2013-05-02 95 views
1

我有一個生產系統和測試系統,都運行IIS。在生產系統中,一切運行良好。在測試系統中,我有一個包含站點代碼的文件夾的定向副本,該站點代碼被設置爲虛擬目錄。 App_Code文件夾位於根目錄幷包含所有.cs文件。當在測試中運行同一站點時,我得到一個ASP.NET IIS7.5解析器錯誤

Server Error in '/' Application. 
-------------------------------------------------------------------------------- 

Parser Error 
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: Could not load type 'SPTasks.master'. 

Source Error: 


Line 1: <%@ Master Language="C#" inherits="SPTasks.master"%> 
Line 2: <html> 
Line 3: <head runat="server"> 


Source File: /SPTasks/master.master Line: 1 

任何想法爲什麼這將在測試中,而不是在生產?代碼是否由於某種原因而編譯?

謝謝!

+0

難道這些不同的機器?你有沒有在應用程序池中檢查框架?例如'Mvc'安裝? – Silvermind 2013-05-02 18:20:13

+0

他們是不同的機器。他們都使用安裝了3.5版本的ASP.NET Framework 2.0。我不確定具體的MVC。有沒有一種快速檢查IIS7.5的方法? – steventnorris 2013-05-02 18:21:48

+0

@Silvermind根據MVC的版本,希望3+,你不應該需要在服務器上本地安裝它。它應該完全從應用程序的bin文件夾中運行。 – kettch 2013-05-02 18:22:07

回答

1

一些評論詢問了MVC,但這看起來像一個WebForms應用程序 - 糾正我,如果我錯了?在過去,如果應用程序尚未編譯,我已經看到這個錯誤。你提到你一次只能複製一個文件。你真的編譯過應用程序嗎?如果bin文件夾中沒有包含您的SPTasks.master.cs類的已編譯代碼的dll,則會出現此錯誤。由於您沒有使用VS來編譯您的應用程序,因此您需要根據this MSDN article直接從命令行使用csc。

如果你在那裏有一個DLL,它可能是值得用一個反編譯器(無論是ReflectorJetbrains DotPeek,這是免費的)裏面找驗證SPTasks.master.cs類是存在的。

另一件事來檢查是該網站在其下運行的應用程序池配置爲.NET Framework 2.0版而不是4.0

+0

我在想這也是一個編譯問題。據我瞭解,App_Code中的代碼應該在第一次運行網站應用程序時進行編譯(如果尚未)。所以我第一次瀏覽網站時,應該編譯代碼。我從來不需要通過命令行來編譯我們的生產環境。 – steventnorris 2013-05-03 11:53:07

+0

我已經做了一些檢查,你是正確的。代碼不編譯。但是,我不應該將代碼編譯到bin文件夾才能工作。它在第一次運行時編譯,如「自動編譯」下所述:http://msdn.microsoft.com/en-us/library/ms178466(v=VS.100).aspx – steventnorris 2013-05-03 14:12:22

+0

聽起來像你有事情設置以下網站模型,而不是Web應用程序模型。也許你有一個關於[動態編譯](http://msdn.microsoft.com/library/ms366723)丟失或設置不正確的設置? – levelnis 2013-05-03 14:36:19

0

您的IIS網站可能配置錯誤。 IIS「虛擬目錄」與應用程序作用域不同。

在IIS管理器中,右鍵單擊應用程序的根目錄並選擇「轉換爲應用程序」。

+0

虛擬目錄是生產環境的工作方式,測試環境需要完全反映生產。 – steventnorris 2013-05-03 11:51:41