ASP.NET场景面试问题。你会怎么回答?

时间:2010-12-16 16:21:41

标签: asp.net

以下是问题情节:

假设您有一个包含以下内容的多页ASP.NET网站 要求:

  1. 当前登录用户的用户特定数据已加载,并且在用户会话期间需要在应用程序的每个单独页面上显示。

  2. 应用程序本身只允许一定数量的用户登录。

  3. 下次特定用户登录时,应将用户返回到最后访问的页面。

  4. 根据这些信息,简要介绍如何使用ASP.NET来管理应用程序的状态以满足这些需求?

    这是我的想法和原因。请提供你的。

      

    当前用户特定数据   登录用户已加载并且是   在每个页面上都需要   用户期间的应用程序   会话。

    这对我来说,面试官希望看看我是否会建议使用母版页作为一种方法来提供在每个页面上显示相同内容的通用方法。

      

    应用程序本身只允许一个   要记录的特定数量的用户   在一次。

    由于用户数量有限,因为缩放不是一个问题,因为性能原因可以将此信息放在Session对象中,或者这是一个陷阱,一些方法是更好?

      

    下次特定用户登录时,   用户应该返回到   最后一页访问

    Cookie似乎是跟踪最后一页访问权限的最佳方法,因为这似乎不是关键信息。

    如果您想留下最佳印象,请告诉我您将如何处理这些问题

    随时提供输入或评论任何订单项。

    谢谢!

3 个答案:

答案 0 :(得分:4)

就(3)而言,考虑共享PC。用户A使用其基于站点的用户名/密码登录网站。完成一大堆工作并关闭浏览器。然后,USer B使用他们的详细信息在相同的PC上登录到同一站点。但是,他们将从用户A获取cookie并被重定向到他们看到的最后一页。这是因为Cookie与浏览器/操作系统用户绑定,因为您可能会在应用程序中单独应用站点安全性。

在这种情况下,您需要将用户名放入cookie(加密)或使用服务器端方法存储位置

答案 1 :(得分:1)

以下是我的想法:

  1. 他们可能正在寻找母版页,但我首先想到的是你是否要缓存这些用户数据,所以每次他们点击新页面时都不会进行数据库查询。要真正给它们留下深刻印象,你可能会提到部分缓存技术,这样即使每次加载页面都不需要重新呈现页面的重复部分。
  2. 我认为你是对的:他们帮助你得出结论,会话状态是缓存用户数据的合适位置。请务必提出相应的问题,例如“有多少用户?”和“每位用户有多少数据?”
  3. 缓存的数据可用于跟踪上次请求的页面,当用户的会话到期时,您可以将此数据保存到数据库表中,以便在下次登录时进行检索。
  4. 第三项非常棘手。如果用户上次查看已被删除的对象,该怎么办?如果用户从一台计算机登录,做了一些工作,然后从另一台计算机或浏览器同时登录,那么预期的行为是什么?我一定会问这些问题,尤其是要表明我理解这样一个要求的含义。如果他们的回答让您相信他们正在寻找一个简单的解决方案,请使用简单的解决方案。否则,请将您的回复调整为尽可能复杂。

答案 2 :(得分:1)

只是一个小小的想法..如果系统在“Farmed”环境中运行,会话数据可以被清除,需要以某种方式处理。

http://www.beansoftware.com/ASP.NET-Tutorials/Store-Session-State-Server.aspx