C# 在两个web应用程序之间共享会话

C# 在两个web应用程序之间共享会话,c#,session,C#,Session,下面是一个场景 我有两个web应用程序,网站A(c#webforms)和网站B(c#MVC) 网站B设置为IIS中网站A下的应用程序 当用户登录到网站a时,我希望该用户能够访问网站B,就像他们访问了网站B并登录一样 我创建了一个web服务,当用户登录到网站a时,它会登录到网站B,但这似乎没有达到预期效果,我猜是因为这两个应用程序不共享一个会话?有没有办法让两个应用程序共享同一个会话?您不能在两个应用程序之间共享web会话,但可以将后端逻辑移动到web api,并在两个网站之间共享,基于令牌的授权

下面是一个场景

我有两个web应用程序,网站A(c#webforms)和网站B(c#MVC)

网站B设置为IIS中网站A下的应用程序

当用户登录到网站a时,我希望该用户能够访问网站B,就像他们访问了网站B并登录一样


我创建了一个web服务,当用户登录到网站a时,它会登录到网站B,但这似乎没有达到预期效果,我猜是因为这两个应用程序不共享一个会话?有没有办法让两个应用程序共享同一个会话?

您不能在两个应用程序之间共享web会话,但可以将后端逻辑移动到web api,并在两个网站之间共享,基于令牌的授权,您只需登录一次,然后使用令牌来授权请求。

为什么不使用web服务呢?如果这些应用采用不同的解决方案,那么我认为您无法共享会话变量。如果是这样,那将是不安全的。正如@exception所说的,web服务会有所帮助。他们应该找同一个来源来检查用户登录状态。如果你真的不想使用web服务(这是标准的方式),你可以使用跨域Cookie并两端使用,尽管我不推荐。我使用的是web服务。当有人登录到网站A时,它会调用网站B上的web服务。不幸的是,用户仍然从网站B注销。如果您在本地调用它,web服务不会有任何问题,因为它可以正常工作。您说“我创建了一个web服务,当用户登录到网站A时,它会登录到网站B”。这一步到底发生了什么?因此,当他们访问网站b时,我必须在查询字符串中传递一个令牌?如果您将后端实现为Web API,通常会在授权标头字段中传递该令牌。可以使用会话通过SQL完成吗?例如,当您使用它为两个不同的服务器共享同一会话时?