首先,我想先提前道歉,因爲我在C#領域缺乏熟練度。「長度不能小於零」。數據庫操作後
儘管我對這個主題知之甚少,但在需要創建網站的精確副本的情況下。該網站正在使用.NET 4.0,在MSSQL Server 2008的IIS 7上運行。新網站設置爲舊網站的子網域。
我做了原始數據庫的完整備份,創建了一個新的數據庫,並用原始備份「恢復」它。我改變的唯一的東西是.mdf和.ldf文件。
然後,我將實際文件複製並粘貼到新文件夾,並使用新數據庫更改了配置文件。
一切工作完美,直到你添加/刪除/從數據庫中消息。此時,網站的首頁會顯示以下消息:
'/'應用程序中的服務器錯誤。
長度不能小於零。
參數名:長度
堆棧跟蹤:
[ArgumentOutOfRangeException: Length cannot be less than zero.
Parameter name: length]
System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy) +10082776
Tang.Core.Utility.HtmlHelper.CutText(String rawText, Int32 length) +242
Tang.Website.UC.ArticleItems.GetLegacyDataTable(Int32 collectionId, Int32 maxRecord) +2172
Tang.Website.UC.ArticleItems.Page_Load(Object sender, EventArgs e) +150
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42
System.Web.UI.Control.OnLoad(EventArgs e) +132
System.Web.UI.Control.LoadRecursive() +66
System.Web.UI.Control.LoadRecursive() +191
System.Web.UI.Control.LoadRecursive() +191
System.Web.UI.Control.LoadRecursive() +191
System.Web.UI.Control.LoadRecursive() +191
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428
另一個錯誤是,當一個用戶登錄(再次 「長度不能爲零」):
<%-- <p class="news_date"><%# Eval("collectionitemdatetime", "{0:d}") %></p>--%>
<p class="news_cont">
**<%# Tang.Core.Utility.HtmlHelper.CutText(Eval("collectionitemtext").ToString(), 450) %>** --> THIS IS WHERE THE PROBLEM IS, OBVIOUSLY STRING IS EMPTY?</p>
</div>
</ItemTemplate>
我完全失去了,因爲沒有任何「主要」已經從原來的編輯。我一定在做數據庫的錯誤。
編輯:事情是,只要我從webconfig文件[到原始數據庫]更改數據庫,一切正常,我可以添加/刪除/編輯項目,它們顯示在主頁上。所以它得是該網站&數據庫,而不是與代碼相關的
EDIT 2之間的東西,找到了解決辦法:我刪除了數據庫,創建一個新的,而不是做一個「恢復」,我做了「導出「。我必須手動設置主鍵並將其中的一些更改爲(是Identify) - 是的,因爲我得到相同的錯誤。不是最優雅的解決方案,但至少一切似乎現在正在工作。
謝謝大家的幫助!
很高興看到「HtmlHelper.CutText」的源代碼。 – user7116 2012-07-11 14:07:40
您是否確認行正在添加到數據庫? – 2012-07-11 14:08:27
@Phil - 什麼是Eval(「collectionitemtext」)的值。ToString()'?您還應該將代碼發佈到'Tang.Website.UC.ArticleItems.GetLegacyDataTable(Int32 collectionId,Int32 maxRecord)' – 2012-07-11 14:21:21