Partial views of Nancy Razor do not appear in release mode

Partial views are displayed in debug mode, but not in release mode.

stack trace

[ArgumentNullException: Value cannot be null. Parameter name: key] System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) +5895838 Nancy.ViewEngines.DefaultViewCache.GetOrAdd(ViewLocationResult viewLocationResult, Func`2 valueFactory) +329 Nancy.ViewEngines.Razor.RazorViewEngine.GetOrCompileView(ViewLocationResult viewLocationResult, IRenderContext renderContext, Assembly referencingAssembly, Type passedModelType) +186 System.Dynamic.UpdateDelegates.UpdateAndExecute5(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) +401 CallSite.Target(Closure , CallSite , RazorViewEngine , ViewLocationResult , IRenderContext , Assembly , Object ) +575 Nancy.ViewEngines.Razor.RazorViewEngine.GetViewInstance(ViewLocationResult viewLocationResult, IRenderContext renderContext, Assembly referencingAssembly, Object model) +1128 System.Dynamic.UpdateDelegates.UpdateAndExecute5(CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) +401 CallSite.Target(Closure , CallSite , RazorViewEngine , ViewLocationResult , IRenderContext , Assembly , Object ) +495 Nancy.ViewEngines.Razor.<>c__DisplayClass1f.<RenderView>b__1e(Stream stream) +470 Nancy.ViewEngines.Razor.HtmlHelpers`1.Partial(String viewName, Object modelForPartial) +1872 RazorOutput.RazorView.<Execute>b__3() +632 Nancy.ViewEngines.Razor.NancyRazorViewBase`1.ExecuteView(String body, IDictionary`2 sectionContents) +374 Nancy.ViewEngines.Razor.<>c__DisplayClass1f.<RenderView>b__1e(Stream stream) +775 Nancy.Hosting.Aspnet.NancyHandler.ProcessRequest(HttpContextBase context) +81 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +913 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +165 

master.cshtml (relevant section only)

 @if (IsSectionDefined("sidebar")) { <div id="two-col"> @RenderBody() </div> <div id="sidebar"> @RenderSection("sidebar") </div> } else { <div id="one-col"> @RenderBody() </div> } 

index.cshtml

 @inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<dynamic> @{ Layout = "master.cshtml"; } // html for body, doesn't use model @section sidebar { @Html.Partial("/sidebars/sidebar.cshtml", Model) } 

sidebar.cshtml (example section)

 <ul> @foreach (var item in Model.Items) { <li>@Html.Raw(@item.DisplayText)</li> } </ul> 
+6
source share
2 answers

I have had this problem lately, but it is related to my layout pages. If you look at your index page, it can be one of two things, such as me, the path to your main page or the path to your partial. If you remove the leading slash in the partial URL or if your main page is in a shared folder, add the full path to its URL (without leading slash or ~ /).

This is where I found the solution. https://groups.google.com/forum/#!topic/nancy-web-framework/zRLth_hl2r8

NTN

+8
source

In our case, the problem was that the views we were talking about lacked settings:

Build Action: Content

The value in file debug mode was read from the file system, but when launched in release mode, it was not copied to the folder with the extension.

+1
source

Source: https://habr.com/ru/post/952402/


All Articles