MiniProfiler выдает исключение "Незаконный персонаж в пути"

Я начал использовать MiniProfiler и считаю его очень полезным при разработке приложения MVC 4.

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

Текст исключения - " Недопустимый символ в пути".

Расположение стека вызовов

MiniProfiler.dll!StackExchange.Profiling.MVCHelpers.ProfilingActionFilter.OnActionExecuted(System.Web.Mvc.ActionExecutedContext filterContext) Строка 58

Мои действия и вид контроллера довольно просты.

Действие контроллера

    [AllowAnonymous]
    public ActionResult ReleaseNotes(string name)
    {
        CheckInput(name);

        string notesPath = Server.MapPath("~/Content/ReleaseNotes/" + name + ".html"); 
        string notes = null;

        if (System.IO.File.Exists(notesPath))
        {
            notes = System.IO.File.ReadAllText(notesPath);
        }

        return View(notes);
    }

    private void CheckInput(string name)
    {
        if (name.Length > 0x100 || !name.IsAlphaNumeric()) throw new ArgumentException("Name is invalid.");
    }

ПРИМЕЧАНИЕ. System.IO.File.ReadAllText успешно считывает содержимое файла HTML. Этот путь действителен.

Посмотреть

@model string

@{
    ViewBag.Title = "Release Notes";
}

<h2>Release Notes</h2>

@if (string.IsNullOrWhiteSpace(Model))
{
    <p>No release notes were found for the specified release.</p>
}
else
{
    @Html.Raw(Model)
}

Я отключил MiniProfiler на данный момент. Любые мысли о том, как заставить его работать снова?

1 ответ

Решение

Оказывается, эта ошибка была любопытным проявлением этой проблемы.

Недопустимые символы в пути при вызове представления индекса из моего контроллера

Я передавал строку в качестве модели. Из-за того, как разрешается перегрузка метода, MVC считал, что содержимое файла HTML - это имя представления, которое я хотел загрузить (неудивительно, что он жаловался на путь...).

Интересно, что отладчик продолжал работу до возврата из действия моего контроллера, прежде чем выдать исключение. После того, как я отключил MiniProfiler, глобальный обработчик исключений моего приложения поймал и зарегистрировал особенности.

Я все еще не уверен, почему проблема обнаружилась в MiniProfiler.

Другие вопросы по тегам