2013-03-06 91 views
1

我正在開發一塊現有的網站,並有很多問題試圖將我的文件上傳到服務器。一切運行良好本地,但一旦我把我的文件在服務器上的東西開始打破。ASP.NET 3.5無法看到我的代碼

現在我有一個頁面,得到這個錯誤

「分析器錯誤信息:‘[命名空間] [頁面名稱]’未能加載類型

如果我走了。這個名字空間和pagename是在後面的代碼中聲明的,這在頁頭中被引用。

我也剛剛注意到,在我之前的所有頁面都沒有代碼。

+0

請分享代碼和頁面指令。 – NoviceProgrammer 2013-03-06 18:15:49

回答

0

因此,我最終與在該網站上工作的其他團隊的首席開發人員進行了交談。他解釋說,他們做一個解決方案重建,然後將任何更改爲* x文件和/ bin .dll。出於某種原因,當我要求它更新時,我的Subversion客戶端並沒有實際更新任何內容,所以我的分支沒有其他小組製作的新控件。當我構建我的解決方案時,它沒有包含新控件的.dll文件,所以當我上傳我的dll時,新的控件沒有定義,並且我得到了相同的消息。當我把新的dll放下時,我的控件沒有被定義。

無論如何,我解決了這個問題。感謝您的答案。

1

當你有一個代碼隱藏文件時,它需要被編譯成一個DLL,並且該DLL需要位於Web服務器的bin目錄中。如果沒有Inherits,它實際上並不能正常工作 - 你的代碼隱藏內容不會在那裏 - 它最初可能只顯示正常,但沒有任何事件會觸發。

如果網站的其餘部分全部使用.aspx頁面中包含的代碼完成,那麼這些頁面都是獨立的。但是如果你想使用代碼隱藏,那麼你需要發佈DLL。

2

在Web服務器上放置文件有兩種選擇。

  • 一種方法是編譯它並使用「發佈」功能,其中所有代碼隱藏文件都不在服務器上,而是編譯爲.dll。
  • 另一種方法是不編譯站點,並簡單地將所有aspx ans .cs(或.vb)文件複製到那裏,然後進行編譯。

實際上有三個,但我認爲你現在只需要處理這兩個。它們在「靈活部署」部分的http://msdn.microsoft.com/en-us/library/ms178466(v=vs.100).aspx中進一步描述。

你的前任顯然使用了第一種方法。解決此問題的唯一方法是將編譯後的.dll文件從\ bin目錄中取出,並使用ReflectorTeleriks's Just Decompile之類的工具對其進行反編譯。 (後者是免費的,前者在有限的試用期內免費)

另外,如果你可以得到完整的源代碼,你可以簡單地刪除所有的內容,並使用非編譯的方法。當然,會有停機時間,你需要非常仔細地測試...

1

測試最簡單的方法來啓動你的代碼併發布代碼。在Visual Studio項目的內部右鍵單擊您的應用程序,然後單擊發布,然後選擇位置,您可以在本地系統上創建一個文件夾,然後選擇僅運行此應用程序所需的文件,然後選擇發佈。它只會複製運行應用程序所需的文件,並且您可以將這些文件複製到您的服務器,並且所有內容都應該正確。我還將複製你的web.config/app.config文件,確保文件中的所有內容都是正確的,或者在發佈完成後從目錄中刪除該文件。