Asp.net MVC3 UrlHelper.Action () генерирует исключение NullReferenceException - PullRequest
2 голосов
/ 24 августа 2011

Проблема

В настоящее время я создаю помощник для ASP.net MVC 3 и сталкиваюсь с проблемой, связанной с методом UrlHelper.Action ().При каждом запросе, кроме первого (после запуска приложения), следующий код генерирует исключение NullReferenceException.

var src = htmlHelper.Url().Action("Css", "Asset", options);

Соответствующий стек

System.Web.HttpServerVarsCollection.Get(String name) +8740566
   System.Web.Mvc.UrlRewriterHelper.WasThisRequestRewritten(HttpContextBase httpContext) +42
   System.Web.Mvc.UrlRewriterHelper.WasRequestRewritten(HttpContextBase httpContext) +23
   System.Web.Mvc.PathHelpers.GenerateClientUrlInternal(HttpContextBase httpContext, String contentPath) +163
   System.Web.Mvc.PathHelpers.GenerateClientUrl(HttpContextBase httpContext, String contentPath) +63
   System.Web.Mvc.UrlHelper.GenerateUrl(String routeName, String actionName, String controllerName, RouteValueDictionary routeValues, RouteCollection routeCollection, RequestContext requestContext, Boolean includeImplicitMvcValues) +150
   System.Web.Mvc.UrlHelper.Action(String actionName, String controllerName, Object routeValues) +55

Возможная причина

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

Поскольку он работает с первым запросом, но завершается неудачно для каждого запроса после этогоУ меня такое ощущение, что это как-то связано с кодом, который запускается при запуске приложения, но должен запускаться при запуске запроса, или что некоторые переменные / объекты не сохраняются в запросах.

Дополнительная информация

htmlHelper.Url () - это следующий метод расширения.

public static UrlHelper Url(this HtmlHelper helper)
{
    return new UrlHelper(helper.ViewContext.RequestContext);
}

Ответы [ 2 ]

0 голосов
/ 16 ноября 2011

Вы когда-нибудь решали это? Недавно я увидел эту ошибку при установке модуля перезаписи IIS 7 Url v.2.0. После удаления проблема исчезла.

0 голосов
/ 29 августа 2011

var src = htmlHelper.Url().Action("Css", "Asset", options); Используете ли вы это в виде или в одном из ваших контроллеров?

В любом случае, оба должны иметь свой собственный объект Url (я сделал здесь предположение, что используемый вами объект htmlHelperтот, который вы создали сами).

public class MyController : Controller
{
    ....
    public ActionResult Index()
    {
        var src = Url.Action("Css", "Asset", options);
        ....
    }
}

или, по вашему мнению:

<head>
    <meta charset="UTF-8">
    <title>@ViewBag.Title</title>
    @{
        var src = Url.Action("Css", "Asset", options);
    }
    <link rel="Stylesheet" href="@src" />

или еще лучше, просто <link rel="Stylesheet" href="@Url.Action("Css","Asset",options)" />

...