У меня на сайте есть логический поток, который не работает из-за Nullpointerexception
, как только я пытаюсь получить доступ к определенному действию GET.
У меня есть несколько очень похожих тел кода в других действиях GET, и это единственное действие GET, которое вызывает эту проблему.Весь код написан на C # , а сайт построен на .NET Framework 4.5.2
. Я написал новую операцию для нашего сайта.Рабочий процесс выглядит следующим образом:
Используя действие с именем AdminEmailCompose, соберите тему письма и основной текст, сохраните текст в переменных сеанса (да, ленивый) и используйте RedirectToAction, чтобы перейти к...
AdminEmailSendOptions.Этот код позволяет пользователю указать, кто должен получать электронную почту (все пользователи, пользователи из меню).Используйте ReDirectToAction, чтобы перейти к ...
AdminEmailUserMenu, который должен отображать список пользователей в качестве возможных целей для электронной почты.Действие GET для AdminEmailUserMenu аварийно завершает работу с вышеупомянутым исключением нулевого указателя.
Я попытался разбить этот случай на более простой вариант использования, и мне это удалось.См. Приведенный ниже код.
Исходная ссылка:
<div>
<li>@Html.ActionLink("Send Email",AdminEmailUserMenu", "Admin")</li>
</div>
GET-код для AdminEmailUserMenu:
//
// GET: /Admin/AdminEmailUserMenu
[AllowAnonymous]
public ActionResult AdminEmailUserMenu()
{
if (Session["uID"] == null || (int)Session["uID"] <= 0)
{
return RedirectToAction("Login", "Account", new { returnUrl = "" });
}
AdminEmailUserMenuViewModel model = new AdminEmailUserMenuViewModel();
List<FTFFLibrary.FTFFUser> userdatalist = new List<FTFFLibrary.FTFFUser>();
userdatalist.Clear();
int userdatalistcount = 0;
userdatalist = FTFFLibrary.FTFFFunctions.FTFFUserGetAll();
userdatalistcount = userdatalist.Count;
model.UseridListCount = userdatalistcount;
if (userdatalistcount > 0)
{
for (int jj = 0; jj < userdatalistcount; jj++)
{
if (userdatalist[jj].buserisConfirmed)
{
model.UseridList.Add(userdatalist[jj].userID);
model.DisplayNameList.Add(userdatalist[jj].userDisplayName);
}
model.UseridListCount = model.UseridList.Count();
}
}
return View(model);
}
Действие GET никогда не выходит за первую строку исполняемого файла.code.
Вот трассировка стека:
Строка 1228: {Строка 1229: Строка 1230: if (Session ["uID"] == null || (int) Session ["uID"] <= 0) Строка 1231: {Строка 1232: return RedirectToAction (" Вход в систему "," Учетная запись ", new {returnUrl =" "}); </p>
[NullReferenceException: ссылка на объект не установлена для экземпляраобъект.] FTFFWebsite.Controllers.AdminController.AdminEmailUserMenu () в C: \ Users \ Владелец \ source \ repos \ FTFFWebsite \ FTFFWebsite \ Controllers \ AdminController.cs: 1230 lambda_method (Закрытие, ControllerBase, Объект []) +62 Система.Web.Mvc.ActionMethodDispatcher.Execute (контроллер ControllerBase, параметры Object []) +14 System.Web.Mvc.ReflectedActionDescriptor.Execute (параметры ControllerContext controllerContext, IDictionary 2 parameters) +157
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 параметра) +27 System.Web.Mvc.Async.AsyncControllerInInb__39 (IAsyncResult asyncResult, ActionInvocation innerInvokeState) +22 System.Web.Mvc.Async.WrappedAsyncResult 2.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase
1.End () +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod.ync.Async.AsyncInvocationWithFilters.b__3d () +50 System.Web.Mvc.Async. <> C__DisplayClass46.b__3f () +228 System.Web.Mvc.Async. <> C__DisplayClass33.b__32 (IAsyncResult asyncveb)).Async.WrappedAsyncResult 1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase
1.End () +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters (IAsyncResult asyncResult) +34 System.Web.Mvc.Asynb. <.Web.Mvc.Async. <> C__DisplayClass21.b__1e (IAsyncResult asyncResult) +100 System.Web.Mvc.Async.WrappedAsyncResult 1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase
1.End () +49 System.Web.Mvc.Async.AsyncControllerActionInscult ()) +27 System.Web.Mvc.Controller.b__1d (IAsyncResult asyncResult, ExecuteCoreState innerState) +13 System.Web.Mvc.Async.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase
1.End () +49 System.Web.Mvc.Controller.EndExecuteCore (IAsyncResult asyncResult) +36 System.Web.Mvc.Controller.b__15 (IAsyncResult asyncResult, контроллер контроллера) +12 System.Web.Mvc.Async.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) +22
System.Web.Mvc.Async.WrappedAsyncResultBase
1.End () +49 System.Web.Mvc.Controller.EndExecute (IAsyncResult asyncResult) +26 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecuntyns + + IAync ()10 System.Web.Mvc.MvcHandler.b__5 (IAsyncResult asyncResult, ProcessRequestState innerState) +21 System.Web.Mvc.Async.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase
1.End () +49 System.Web.Mvc.MvcHandler.EultyncRequestRecult) +28 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest (результат IAsyncResult) +9System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +9873649 System.Web.HttpApplication.ExecuteStepImpl (шаг IExecutionStep) +48 System.Web.HttpApplication.*