2

我第一次尝试南希(到目前为止真的很喜欢)并且遇到了一些问题。当我调用 Html.RenderContext.Context.CurrentUser 时,我收到以下错误:

Errors:
[CS0012] Line: 5 Column: 6 - The type 'Nancy.ViewEngines.IRenderContext' is defined in an      assembly that is not referenced. You must add a reference to assembly 'Nancy, Version=0.16.2.0,  Culture=neutral, PublicKeyToken=null'. (show)
[CS1061] Line: 5 Column: 29 - 'Nancy.ViewEngines.IRenderContext' does not contain a definition  for 'Context' and no extension method 'Context' accepting a first argument of type   'Nancy.ViewEngines.IRenderContext' could be found (are you missing a using directive or an assembly   reference?) (show)
[CS1061] Line: 9 Column: 63 - 'Nancy.ViewEngines.IRenderContext' does not contain a definition  for 'Context' and no extension method 'Context' accepting a first argument of type   'Nancy.ViewEngines.IRenderContext' could be found (are you missing a using directive or an assembly reference?) (show)

该视图是部分视图,如下所示:

<li class="divider-vertical"></li>

@if (Html.RenderContext.Context.CurrentUser != null)
{
    <div class="btn-group pull-right">
        <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
            <i class="icon-user"></i> @Html.RenderContext.Context.CurrentUser.UserName
            <span class="caret"></span>
        </a>
        <ul class="dropdown-menu">
            <li><a href="/Dashboard">Content Dashboard</a></li>
            <li><a href="/Login/SignOut">Log off</a></li>
        </ul>
    </div>
}
else
{
    <li><a href="/Login">Login</a></li>
}

在引导程序中启用 FormsAuthentication

    FormsAuthentication.Enable(pipelines, new FormsAuthenticationConfiguration 
        {
            RedirectUrl = "~/login",
            UserMapper = container.Resolve<IUserMapper>()
        });
    }

Usermapper 和 Identity 实现看起来像这样

public class GoonUserMapper : IUserMapper
{
    public IUserIdentity GetUserFromIdentifier(Guid identifier, NancyContext context)
    {
        return new GoonIdentity { UserName = "Testing" };
    }
}


public class GoonIdentity : IUserIdentity
{
    public GoonIdentity()
    {
        this.Claims = new List<string>();
    }

    public string UserName { get; set; }

    public IEnumerable<string> Claims { get; set; }
}

我正在使用以下软件包:

Nancy.Authentication.Forms Nancy.Hosting.Aspnet Nancy.Validation.FluentValidation Nancy.Viewengines.Razor

4

1 回答 1

3

确保你的配置看起来有点像这样

<configuration>
  <configSections>
    <section name="razor" type="Nancy.ViewEngines.Razor.RazorConfigurationSection, Nancy.ViewEngines.Razor" />
  </configSections>
  <appSettings>
    <add key="webPages:Enabled" value="false" />
  </appSettings>
  <system.web>
    <compilation>
      <buildProviders>
        <add extension=".cshtml" type="Nancy.ViewEngines.Razor.BuildProviders.NancyCSharpRazorBuildProvider, Nancy.ViewEngines.Razor.BuildProviders" />
        <add extension=".vbhtml" type="Nancy.ViewEngines.Razor.BuildProviders.NancyVisualBasicRazorBuildProvider, Nancy.ViewEngines.Razor.BuildProviders" />
      </buildProviders>
    </compilation>
  </system.web>
  <razor disableAutoIncludeModelNamespace="false">
    <assemblies>
      <add assembly="Nancy" />
    </assemblies>
    <namespaces>
      <add namespace="Nancy" />
      <add namespace="Nancy.ViewEngines.Razor" />
    </namespaces>
  </razor>
</configuration>

它会起作用

于 2013-04-12T06:23:06.520 回答