Индекс C # находился за пределами массива - PullRequest
0 голосов
/ 07 сентября 2011

Недавно я получил эти исключения в своем приложении, которое размещено на сервере. Когда я перезапустил веб-сайт в IIS , ошибка была исправлена. Но я не знаю последовательность, которая привела к этому исключению, поскольку я не смог отладить код (так как он размещен на сервере). исключение не выбрасывается. Я проверил свой бэк-энд. Это также идеально. Я поддерживаю трассировку стека для всех ошибок, которые произошли в моем приложении. Я добавлю исключение для вашей справки.

Сообщение

Exception of type `'System.Web.HttpUnhandledException'` was thrown.

Источник

System.Web

Stack

at System.Web.UI.Page.HandleError(Exception e) at
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean
includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest(Boolean
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at
System.Web.UI.Page.ProcessRequest() at
System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) at
System.Web.UI.Page.ProcessRequest(HttpContext context) at
ASP.admin_editvideos_aspx.ProcessRequest(HttpContext context) at
System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Сообщение

 Index was outside the bounds of the array.

Источник

App_Web_kys31898

Stack

 at EditVideos.SetSpanAndLabelValues(Video aVideo, EduvisionUser auser) at
    EditVideos.AssignVideoDetailsToControls(Video aVideo, EduvisionUser auser) at
    EditVideos.SetValue(Int32 videoId, Int32 categoryId) at
    EditVideos.SetValuesOnPageLoad() at EditVideos.Page_Load(Object sender, EventArgs e) at
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t,
    EventArgs e) at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,
    EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at
    System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean
    includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

C # код:

private void SetSpanAndLabelValues(Video aVideo, EduvisionUser auser)
{
    string uploadedDate = aVideo.UploadedDate.ToString();
    string[] dateTimeValue = uploadedDate.Trim().Split(' ');
    string dateFormat = CommonUtilities.GetCultureDateFormat(dateTimeValue[0]);
    spn_UploadedDate.InnerHtml = dateFormat + ' ' + dateTimeValue[1] + ' ' + dateTimeValue[2];
    spnUploader.InnerHtml = aVideo.Title;
    spnvideotitle.InnerHtml = ReadUserMessage("DisplayVideoTitle", "VideoTitle").Replace("#title#", aVideo.Title);
    spanVideoTitle.InnerHtml = ReadUserMessage("DisplayVideoTitle", "VideoTitle").Replace("#title#", aVideo.Title);
    spnviewermail.InnerHtml = ReadUserMessage("EditVideos", "MailOption").Replace("#Mail#", auser.Email);
    spnmailvalue.InnerHtml = auser.Email;
    spnUploaderName.InnerHtml = auser.FirstName;
    SetVideoFileNameSpan(aVideo);
    SetThumbnailFileNameSpan(aVideo);
    if (aVideo.LastUpdatedDate.HasValue)
    {
        string LastUpdatedDate = aVideo.LastUpdatedDate.ToString();
        string[] updatedDateTimeValue = LastUpdatedDate.Trim().Split(' ');
        string cultureDateFormat = CommonUtilities.GetCultureDateFormat(updatedDateTimeValue[0]);
        lblUploadedDate.Text = cultureDateFormat + ' ' + updatedDateTimeValue[1] + ' ' + updatedDateTimeValue[2];
    }
    else
    {
        lblUploadedDate.Text = "Not yet updated";
    }
}

Если вы считаете, что этот вопрос неопределенный, я могу предоставить больше информации. Пожалуйста, помогите мне выяснить причину исключения.

Спасибо

Ответы [ 2 ]

1 голос
/ 07 сентября 2011
string[] dateTimeValue = uploadedDate.Trim().Split(' ');

string[] updatedDateTimeValue = LastUpdatedDate.Trim().Split(' '); 

Обе эти строки, которые вы разделяете, а затем предполагаете, что они разделяются на то, что вы ожидаете в своем коде, вам нужно убедиться, что они разбиты на правильные значения и значения. Также вы не можете разделить DateTime таким образом, так как формат отображения даты значительно отличается в зависимости от того, откуда вы.

Используйте DateTime.Parse () и работайте с объектом datetie.

0 голосов
/ 07 сентября 2011

Сначала нужно проверить, что загруженная дата содержит [''] и, если содержит, вы должны написать следующее утверждение

string[] dateTimeValue = uploadedDate.Trim().Split(' '); 

иначе вам придется пропустить простую строку, а также позаботиться о будущем коде.

 string dateFormat = CommonUtilities.GetCultureDateFormat(dateTimeValue[0]); 
 spn_UploadedDate.InnerHtml = dateFormat + ' ' + dateTimeValue[1] + ' ' + dateTimeValue

здесь проблема в том, что сервер, на котором вы загрузили код, может иметь другой формат времени или что-то еще, что создает некоторую проблему. Поместите somejavascript, чтобы проверить это значение. Это единственный способ проверить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...