“长度不能小于零。”数据库操作后

时间:2012-07-11 14:04:17

标签: c# .net iis

首先,我想提前为我在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,找到解决方案:我删除了数据库,创建了一个新的数据库,而不是进行“恢复”,我从原来的“导出”。我必须手动设置主键并将其中一些更改为(Is Identify) - 是的因为我得到了同样的错误。不是最优雅的解决方案,但至少现在一切似乎都在起作用。

谢谢大家的帮助!

1 个答案:

答案 0 :(得分:1)

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