asp.net-mvc – 使用ServiceStack设计Web应用程序
在获得有关在我的asp.net MVC网站上使用ServiceStack的建议之后
( Maintaining state in Asp.Net MVC website),我开始在我的项目中实现它 – 但有些东西对我来说仍然不清楚. 目前我有两个项目:一个是asp.net MVC项目,另一个是BL项目(一个包含所有业务逻辑的类库). 目前,mvc项目加载BL的DLL,但是在将来网站增长时,BL的项目将在不同的机器上运行. 我想使用ServiceStack进行会话管理/缓存和身份验证(这两者通常都相互依赖). 我的问题: 2)是否可以在两个项目之间拆分ServiceStack的实现?我想使用ServiceStack的身份验证提供程序在BL项目中维护身份验证过程,但是我自己(或在ServiceStack的帮助下)在mvc项目中处理所有UI / cookie. 3)我想在BL项目中使用ServiceStack的缓存,但我想我仍然需要维护一些会话cookie来接收会话ID.做正确的方法是什么?是否有用于此目的的内置辅助函数? 提前致谢! 解决方法
1)如果没有基于消息的Web服务的功能,并且在初始化两次时(在两个项目中)都会抛出错误.
如果您安装最新的ServiceStack.Mvc NuGet软件包,您将获得基础ServiceStackController,这是一个MVC控制器,可以方便地访问ServiceStack的内置提供程序.虽然您仍需要使用所需的依赖项自动连接控制器,例如注入的ICacheClient. 虽然即使您没有使用ServiceStack的WebFramework,但拥有AppHost是一个方便的注册依赖项的地方. ServiceStack由ASP.NET’s IHttpHandler mappings specified in the Web.config触发,因此如果您没有指定任何映射,则永远不能在外部调用ServiceStack,但仍可以使用以下内容访问已注册的依赖项: var cache = AppHost.Resolve<ICacheClient>(); //Get ICacheClient for SS IOC 2)是否可以在两个项目之间拆分ServiceStack的实现? 如果您有AppHost,则在主机项目中不能有多个实例(按设计),因为AppHost应该类似于主机项目,其中应注册所有服务依赖项并配置适用于整个Web应用程序的设置或服务. 但是,您可以跨多个程序集拆分服务的实现,并让ServiceStack通过在AppHostBase构造函数中指定它们来扫描它们,例如: public class AppHost : AppHostBase { public AppHost() : base("My Service",typeof(AServiceInDll1).Assembly,typeof(AServiceInDll2).Assembly/*,etc.*/){} } 2)续我想使用ServiceStack的身份验证提供程序在BL项目中维护身份验证过程,但是我自己(或在ServiceStack的帮助下)在mvc项目中处理所有UI / cookie. 查看ServiceStack.UseCases CustomAuthenticationMvc示例项目以获取使用MVC但使用ServiceStack进行身份验证的示例. 3)我想在BL项目中使用ServiceStack的缓存,但我想我仍然需要维护一些会话cookie来接收会话ID.做正确的方法是什么?是否有用于此目的的内置辅助函数? 您可以像使用任何其他C#类一样使用ServiceStack’s Caching providers中的任何一个,即将您的业务逻辑绑定到ICacheClient并在您的IOC中注入具体实现. 对于会话,您可以使用base.SessionAs< T> ServiceStack.Mvc ServiceStackController中的方法来访问会话.要保存会话,您可以使用IHttpRequest.SaveSession()扩展方法.虽然这两种方法都需要ASP.NET上下文(它使用ASP.NET的HttpContext单例,如果没有提供),因为它依赖于ServiceStack的ss-id / ss-pid cookie,它们被自动指示添加到客户端上(由服务器)每当您访问会话时. 如果您不希望业务逻辑服务依赖于ASP.NET的System.Web,我建议访问并保存要在控制器中完成的会话并将其传递给业务逻辑. 我建议阅读Sessions Wiki Page以获取有关ServiceStack会话如何工作的更多背景信息. 在ServiceStack和ASP.NET或MVC之间集成ASP.NET上下文 我将添加此信息,因为它对于在ServiceStack和ASP.NET或MVC之间进行高级集成的任何人都很有用,因为一些ServiceStack的扩展方法依赖于这些内置类型. 您可以使用以下命令创建ServiceStack IHttpRequest或IHttpResponse(在任何HTTP / Controller请求中): var ssHttpRequest = System.Web.HttpContext.Current.Request.ToRequest(); var ssHttpResponse = System.Web.HttpContext.Current.Response.ToResponse(); 最后,您可以创建一个完整的请求上下文(包含IHttpRequest和IHttpResponse): var ssRequestContext = System.Web.HttpContext.Current.ToRequestContext(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.net webforms中的异步页面处理示例(.NET 2.0)
- asp.net-mvc – 在MVC Controller中访问GET参数
- ASP.NET Identity外部认证提供程序自定义图标
- asp.net – 如何在不重新启动应用程序的情况下清除网站的Ou
- asp.net – 多个DataContext类是否适合?
- asp.net – Visual Studio 2013上的Lorem快捷方式无法正常工
- 我可能正在开发一个ASP.NET应用程序. Java / PHP开发人员在
- asp.net – Async / Await和AsyncController?
- asp.net-mvc – 如何修复错误名称空间’System’中不存在类
- asp.net-mvc-3 – 如何正确使用RedirectToAction