ASP.NET VirtualPathProvider .Execute()': не найден подходящий метод для переопределения

В настоящее время я пытаюсь реализовать Razor Web Pages в более старом проекте WebForms, а также сделать возможным рендеринг частичных представлений из строки (взятой из базы данных в другом месте). Я реализовал пользовательский VirtualPathProvider со всеми переопределениями, указанными здесь: ASP.NET MVC и виртуальными представлениями, а также переписал эти методы:

public override CacheDependency GetCacheDependency(string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart)
{
     if (virtualPath.Contains("RazorMigration.cshtml") && HttpContext.Current.Items.Contains("RazorTestingPage"))
     {
          return null;
     }
     return Previous.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart);
}

public override String GetFileHash(String virtualPath, IEnumerable virtualPathDependencies)
{
    if (virtualPath.Contains("RazorMigration.cshtml") && HttpContext.Current.Items.Contains("RazorTestingPage"))
    {
        return Guid.NewGuid().ToString();
    }

    return Previous.GetFileHash(virtualPath, virtualPathDependencies);
}

Затем, когда я пытаюсь фактически отобразить страницу (completeTemplate уже содержит чистый HTML с уже проанализированной бритвой) следующим образом:

var rt = new RouteData();
rt.Values.Add("controller", "WebFormShimController");

var httpCtx = new HttpContextWrapper(System.Web.HttpContext.Current);
var ctx = new ControllerContext(new RequestContext(httpCtx, rt), new WebFormShimController());
try
{
     HttpContext.Current.Items.Add("RazorTestingPage", completeTemplate);

     IView view = ViewEngines.Engines.FindPartialView(ctx, System.IO.Path.GetFileName("RazorMigration")).View;

     ViewContext vctx = new ViewContext(ctx, view,
         new ViewDataDictionary { Model = model },
         new TempDataDictionary(), httpCtx.Response.Output);
     view.Render(vctx, System.Web.HttpContext.Current.Response.Output);
 }

Я всегда ловлю Exception On view.Render, говоря так:

c: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Временные файлы ASP.NET \root\0e7dfb6a\c63cc9d1\App_Web_razormigration.cshtml.afd51fd3.jujzzimy.0.cs(41): ошибка CS1009: нераспознанная escape-последовательность

Я не совсем уверен, в чем здесь проблема, или где и как этот путь построен. Если бы кто-то мог указать мне правильное направление, я был бы очень счастлив, поскольку я пытаюсь заставить это работать почти неделю, но все еще безуспешно.

РЕДАКТИРОВАТЬ: я обнаружил ошибку - это было в моей кодировке при записи в файл (поэтому, когда файл был записан, были добавлены символы \NUL, что запутало IIS) Теперь я получаю эту ошибку:

CS0115: c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\0e7dfb6a\c63cc9d1\App_Web_4b7b71f4-87c2-4364-be0e-19ec2a81ceccR.0.cs.Execute()': no suitable method found to override

Я уверен, что у меня нет ошибки в моем представлении, поскольку оно содержит только это:

<h1>Hello</h1>

0 ответов

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