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