【问题标题】:using session state in webservice in ASP.NET在 ASP.NET 的 web 服务中使用会话状态
【发布时间】:2011-09-16 06:29:09
【问题描述】:

登录时,我将用户名保存到Session["username"]。在下一页上,我正在进行 Web 服务调用。在网络服务中,我想访问这个会话。

如何做到这一点?

我什至尝试将 EnableSession 设置为 true 的 webmethod。但是,仍然在执行Session["username"] 时,会显示设置为空异常的实例。

请帮忙。

【问题讨论】:

  • 您好,Web 服务是否托管在与 asp.net 应用程序相同的应用程序中?

标签: c# asp.net web-services


【解决方案1】:

你应该永远不要那样做。

Web 服务是一种通过网络在两个电子设备之间进行通信的方法。这 2 台设备不共享会话或任何其他服务器信息,除了那些由 Web 服务签名明确定义的信息。

您必须记住,任何设备都可以访问您的网络服务,并且这种访问不应取决于它使用的语言。

因此,您应该在您提供的回复中添加您想要分享的所有信息。

【讨论】:

  • 虽然我同意您不应该使用会话在 UI 和 Web 服务之间进行通信,但允许 Web 服务拥有其自己的会话状态是有正当理由的.我有一个 Web 服务,调用者必须调用一个身份验证方法才能使用。该方法返回调用者在后续请求中包含的 id。通过将该 id 设置为会话标识符,我可以允许它在给定时间后过期。如果我在响应中返回所有内容,黑客可能会想出如何伪造请求以绕过超时。
【解决方案2】:

该 Web 服务是否存在于同一个应用程序中? 您如何执行登录,您是否使用会员提供者来做到这一点?

也许您可以从

获得用户名
HttpContext.Current.User.Identity.Name

与您的登录用户对应的 IPrincipal 对象?

【讨论】:

    【解决方案3】:
    猜你喜欢
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 2013-02-04
    • 1970-01-01
    相关资源
    最近更新 更多