2012-07-11 162 views
-1

首先,我想先提前道歉,因爲我在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) - 是的,因爲我得到相同的錯誤。不是最優雅的解決方案,但至少一切似乎現在正在工作。

謝謝大家的幫助!

+3

很高興看到「HtmlHelper.CutText」的源代碼。 – user7116 2012-07-11 14:07:40

+0

您是否確認行正在添加到數據庫? – 2012-07-11 14:08:27

+1

@Phil - 什麼是Eval(「collectionitemtext」)的值。ToString()'?您還應該將代碼發佈到'Tang.Website.UC.ArticleItems.GetLegacyDataTable(Int32 collectionId,Int32 maxRecord)' – 2012-07-11 14:21:21

回答

1

看起來像長度參數帶有-1值CutText功能。有沒有你使用的ORM工具?如果您使用實體框架,則必須設置適當的連接字符串。也許你的SQL安全屬性不允許你添加。當你添加新聞時,一定要看看你的分貝。

+0

我有Visual Studio在手。我在評論中說過,當你添加/編輯/刪除文章時,他們似乎正確地保存了,並且從系統的後端訪問它們時沒有問題,它只是索引頁和新聞列表頁面不工作。我不知道這是爲什麼,我不知道如何調試它? – Phil 2012-07-11 15:15:13

+0

@Phil你不知道如何在代碼後面進入調試模式? – Paparazzi 2012-07-11 15:56:57

相關問題