-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 文件 [更改为原始数据库],一切正常,我可以添加/删除/编辑项目,它们会显示在主页上。所以它必须是网站和数据库之间的东西,而不是与代码相关的东西

编辑2,找到解决方案:我删除了数据库,创建了一个新数据库,而不是“恢复”,而是从原始数据库中“导出”。我必须手动设置主键并将其中一些更改为(是识别) - 是的,因为我遇到了同样的错误。不是最优雅的解决方案,但至少现在一切似乎都在工作。

谢谢大家的帮助!

4

1 回答 1

1

看起来长度参数带有 CutText 函数的 -1 值。有你使用的 ORM 工具吗?如果您使用实体框架,则必须正确设置连接字符串。也许您的 sql 安全属性不允许您添加。添加新闻时,请务必查看您的数据库。

于 2012-07-11T14:48:24.650 回答