2011-01-12 90 views
3

我在將我的網站部署到服務器後遇到問題。 注意,這是一個Web站點網站應用 .The錯誤是:asp.NET 2.0網站無法訪問App_Code中的類

編譯器錯誤信息:CS0246:類型或命名空間名稱「訂單」找不到(是否缺少using指令或裝配參考?)

版本信息:Microsoft .NET Framework版本:2.0.50727.1433; ASP.NET版本:2.0.50727.1433

我已經做了大量的Google搜索,並且一直沒能找到任何有用的東西。

我的代碼看起來像這樣(我得到的聲明令行編譯器錯誤):

//Default.aspx.cs 
namespace Foo 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     private Order custOrder; 
     ....etc 
    } 
} 

在App_Code文件夾中我有Order.cs:

namespace Foo 
{ 
    public class Order 
    { 
     ....etc 
    } 
} 

奇怪的是這可以在本地和開發環境中正常工作。當我將它移動到qa環境時,那是我遇到錯誤時。

我通過將所有代碼提交到Subversion存儲庫然後在服務器計算機上執行導出來進行部署。

我想這可能是某種名稱空間錯誤,但我不知道爲什麼它可以在某些機器上工作,而不是其他機器。

任何想法可能會導致此不同服務器上可能會有所不同?所有機器都將.net版本報告爲2.0

回答

3

正如它所說,錯誤意味着它找不到那種類型。

可能的原因:

  1. 編譯錯誤被編譯防止您的app_code文件夾中的文件的.cs。當ASP.NET查看編譯後的代碼時,它找不到要查找的類,從而導致錯誤。

  2. .cs文件未部署到app_code。顯然,如果源文件不在網站中,則無法編譯。

  3. 權限問題阻止服務器加載.cs文件。

  4. 您的某個網頁錯誤地引用了該類 - 可能是.cs或.aspx中的拼寫錯誤,某個類已移至新的命名空間或重命名等。

實質上,找不到,訪問或編譯源代碼。

0

您是否在.aspx文件中部署.dll文件?

+1

由於這是一個網站,我的印象是App_Code中的文件是在運行時編譯的,我不需要對dll做任何事情。你能否通過在我的.aspx文件中進行部署來闡明你的意思? – Tavis 2011-01-12 18:14:15

+0

您必須將.aspx文件部署到應用程序根目錄,並將.dll從bin目錄部署到應用程序根目錄的bin目錄中。 – Matten 2011-01-12 18:28:09

+0

請參閱Szeliga的答案,他解釋了我的意思 – Matten 2011-01-12 18:28:51

1

很多時候bin目錄在SVN中被忽略(出於很好的理由),所以最終發生的是本地(在調試時)VS負責爲你創建App_Code.dll。你需要做的是檢查bin目錄是否部署到你的服務器上。如果不是,你有很多方法來部署你的解決方案,通過使用部署網站,或FTP副本等。

16

右鍵單擊App_Code中的源文件並將其「Build Action」屬性設置爲「Compile」。

1

屬性Build Action是否設置爲在您的App_Code文件上編譯?它不是默認的Web應用程序項目。