首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SharpArch.Domain.PreconditionException:‘尚未配置ISessionStorage’

SharpArch.Domain.PreconditionException:‘尚未配置ISessionStorage’
EN

Stack Overflow用户
提问于 2018-02-09 12:18:44
回答 1查看 355关注 0票数 1

我尝试使用hibernate SharpArch.Domain.PreconditionException构建ASP.NET标识项目:“尚未配置ISessionStorage”https://github.com/Streamc/IdHiber

我从https://github.com/nhibernate/NHibernate.AspNet.Identity/tree/master/source/NHibernate.AspNet.Web项目中借用代码,创建了新项目并添加了一些文件。我制作了Register.html,并在关于.cshtml文件中粘贴了代码

代码语言:javascript
复制
@model IdHiber.Models.RegisterViewModel
@{
    ViewBag.Title = "Register";
}
<h2>@ViewBag.Title.</h2>
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
    @Html.AntiForgeryToken()
    <h4>Create a new account.</h4>
    <hr />
    @Html.ValidationSummary()
    <div class="form-group">
        @Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
        </div>
    </div>
    <div class="form-group">
        @Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.PasswordFor(m => m.Password, new { @class = "form-control" })
        </div>
    </div>
    <div class="form-group">
        @Html.LabelFor(m => m.ConfirmPassword, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" })
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" class="btn btn-default" value="Register" />
        </div>
    </div>
}

它显示以下内容中的错误:

代码语言:javascript
复制
    public class AccountController : Controller
    {
        public AccountController()
            : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(NHibernateSession.Current)))
        {
        }
...
}

我有一个mysqlite DB。我能做些什么

代码语言:javascript
复制
[PreconditionException: An ISessionStorage has not been configured]
   SharpArch.Domain.Check.Require(Boolean assertion, String message) in c:\projects\milesibastos\Sharp-Architecture\Solutions\SharpArch.Domain\DesignByContract\Check.cs:296
   SharpArch.NHibernate.NHibernateSession.CurrentFor(String factoryKey) in c:\projects\milesibastos\Sharp-Architecture\Solutions\SharpArch.NHibernate\NHibernateSession.cs:117
   SharpArch.NHibernate.NHibernateSession.get_Current() in c:\projects\milesibastos\Sharp-Architecture\Solutions\SharpArch.NHibernate\NHibernateSession.cs:80
   IdHiber.Controllers.AccountController..ctor() in C:\Users\userx\source\repos\IdHiber\IdHiber\Controllers\AccountController.cs:16

[TargetInvocationException: 
   System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
   System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +119
   System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +247
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +83
   System.Activator.CreateInstance(Type type) +11
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +55

[InvalidOperationException: An error occurred when trying to create a controller of type 'IdHiber.Controllers.AccountController'. Make sure that the controller has a parameterless public constructor.]
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +178
   System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +76
   System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +88
   System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +194
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +50
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +48
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +103
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

但是我没有c:\projects\milesibastos文件夹!

我能做什么?

EN

回答 1

Stack Overflow用户

发布于 2019-01-31 16:16:34

我不知道您是否解决了这个问题,但我遇到了同样的问题,并通过修改我的startup.cs来解决它,使其包含以下内容

代码语言:javascript
复制
public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);
        ConfigureData();
    }

    private static void ConfigureData()
    {
        var storage = new WebSessionStorage(System.Web.HttpContext.Current.ApplicationInstance);
        DataConfig.Configure(storage);
    }
}

还要确保您的bin文件夹中有一个hibernate.cfg文件。我希望这能节省一些人的时间!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48698679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档