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