2013-08-24 5 views
6

Teilansichten werden im Debug-Modus gerendert, aber nicht im Freigabemodus.Teilansichten von Nancy Razor werden im Freigabemodus nicht gerendert

Stapelüberwachung

[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 (relevante Abschnitt nur)

@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 (Probenabschnitt)

<ul> 
@foreach (var item in Model.Items) 
{ 
    <li>@Html.Raw(@item.DisplayText)</li> 
} 
</ul> 
+0

Scheint mit dem Veröffentlichungsmodus verbunden zu sein - gefunden https://groups.google.com/forum/#!searchin/nancy-web-framework/razor/nancy-web-framework/T95zFkxeJjg/LkWguk-xwI8J – Leslie

Antwort

8

Ich hatte dieses Problem vor kurzem, aber mit meinen Master-Layout-Seiten verknüpft. Mit Blick auf Ihre Indexseite könnte es eines von zwei Dingen, wie mir, der Pfad zu Ihrer Masterseite oder der Pfad zu Ihrem Teil sein. Wenn Sie den führenden Schrägstrich in Ihrer partiellen URL entfernen oder wenn Ihre Masterseite in einem freigegebenen Ordner ist, fügen Sie den vollständigen Pfad zu seiner URL hinzu (ohne führende Schrägstriche oder ~ /).

Hier habe ich die Lösung gefunden. https://groups.google.com/forum/#!topic/nancy-web-framework/zRLth_hl2r8

HTH

+0

Danke so sehr! Ich dachte, ich hätte das versucht, aber offensichtlich nicht. Die führenden Schrägstriche zu meinen Partials entfernt und alles ist gut. :) – Leslie

+0

Das ist seltsam. Es funktionierte gut für mehrere veröffentlicht (Azure-Website). Ich hatte relative Pfade zum Layout und teilweise .cshtml-Dateien verwendet. Bestätigt, dass das Entfernen dieses Problems das Problem behoben hat. – Aaron

1

In unserem Fall war das Problem, dass die Ansichten wir beziehen fehlten wurden die Einstellung:

Build Action: Content

Bedeutung im Debug-Modus die Dateien waren aus dem Dateisystem gelesen werden, aber nicht in den Freigabeordner kopiert wurden, wenn er im Freigabemodus ausgeführt wird.

Verwandte Themen