我是一名 Web 开发人员,在一家新商店与来自桌面背景的开发人员一起工作——因此,他们在组织代码时有某些特质/最佳实践——其中一个是将单独的 UI 视图隔离到不同的项目中。
所以,在房子的网页端,我在不同的应用程序域中构建不同的项目时遇到了问题:
1) 我有一个带有 default.aspx 的“门户”项目 在后面的代码中,有一个自定义身份验证方法从 Login_Authenticate 事件内部调用,以登录到桌面应用程序的“业务层”。业务端将会话数据存储在 ASP.NET 会话中。
2) 我有一个带有 default.aspx 的“查看器”项目——它最初在门户项目中为“Viewer.aspx”,它在相同的登录方案下被覆盖并经过良好的身份验证,但我们认为它会很好在它自己的项目上,因为它是一个单独的视图。
我们向两个 web.config 文件添加了相同的机器密钥,因此可以通过单点登录传递 .NET 表单身份验证。
我以两种不同的方式构建了查看器项目:
第一次尝试(它自己的 URL):
第二次尝试(门户 URL 下的子域):
我遇到的问题是会话没有在 Portal 项目和 Viewer 项目之间传递。我知道这是因为 IIS 在不同的应用程序域中运行它们。不幸的是,没有来自 Portal 的 ASP.NET 会话,查看器不会登录到业务应用程序。
是否有最佳实践/甚至可以在一个应用程序域中运行多个项目?Viewer 是否应该成为 Portal 应用程序的一部分,因为它需要相同的会话?Viewer 是否应该是一个单独的项目,需要它自己单独登录到业务层?这种情况甚至有最佳实践/指南吗?