标签: session-variables

这位ASP.NET顾问知道他在做什么吗?

我们子公司的IT部门有一家咨询公司为他们编写了一个ASP.NET应用程序.现在它已经出现间歇性问题,混淆了当前用户是谁,并且已经知道他错误地向Joe展示了一些Bob的数据.

顾问们被带回来进行故障排除,我们被邀请听取他们的解释.突然发生了两件事.

首先,顾问主管提供了这个伪代码:

void MyFunction()
{
    Session["UserID"] = SomeProprietarySessionManagementLookup();
    Response.Redirect("SomeOtherPage.aspx");
}
Run Code Online (Sandbox Code Playgroud)

他继续说会话变量的赋值是异步的,这似乎是不真实的.对查询函数的调用可以异步执行某些操作,但这似乎是不明智的.

鉴于所谓的异步性,他的理论是在重定向不可避免的ThreadAbort异常被引发之前没有分配会话变量.然后,此故障阻止SomeOtherPage显示正确的用户数据.

其次,他举了一个他推荐的编码最佳实践的例子.而不是写:

int MyFunction(int x, int x)
{
    try 
    {
        return x / y; 
    }
    catch(Exception ex)
    {
        // log it
        throw;
    }
}
Run Code Online (Sandbox Code Playgroud)

他推荐的技术是:

  int MyFunction(int x, int y, out bool isSuccessful)
  {
    isSuccessful = false;

    if (y == 0)
        return 0;

    isSuccessful = true;

    return x / y;
  }
Run Code Online (Sandbox Code Playgroud)

这肯定会起作用,并且在某些情况下从性能角度来看可能更好.

但是,从这些和其他讨论点来看,我们认为这个团队在技术上并不精通.

意见?

c# asp.net exception session-variables

9
推荐指数
5
解决办法
1816
查看次数

为会话值的键名创建枚举是一个好主意吗?

而不是做

 session("myvar1") = something
 session("myvar2") = something
 session("myvar3") = something
 session("myvar4") = something
Run Code Online (Sandbox Code Playgroud)

是在做

enum sessionVar
   myvar1
   myvar2
   myvar3
   myvar4
end enum


 session(sessionVar.myvar1.tostring) = something
 session(sessionVar.myvar2.tostring) = something
 session(sessionVar.myvar3.tostring) = something
 session(sessionVar.myvar4.tostring) = something
Run Code Online (Sandbox Code Playgroud)

会更好?

vb.net asp.net session-variables session-state

9
推荐指数
2
解决办法
2502
查看次数

如何查看用户是匿名用户还是从javascript登录?

我想确定用户是否已登录,或者他们是否只是来自javascript的匿名...

我发现了这个问题,但它是php代码,我不确定是否有一个名为logged_in的会话变量存储在登录中,或者这只是那个人自己实现的东西.

任何人都知道如何检查用户是否从javascript登录,可能使用ajax?

编辑:我正在运行Asp.Net MVC,抱歉应该已经指定了

这样我就可以实现客户端ajax登录.当页面加载时,我需要知道用户是否登录,因此我可以<asp:LoggedInView>使用jquery 实现类似于控件的操作.

谢谢,
马特

javascript authentication session-variables

9
推荐指数
2
解决办法
2万
查看次数

如何让ELMAH包含会话值?

注意:我知道避免使用会话的各种原因,但这是我继承的项目,所以请跳过任何回复的那部分:)

由于这是一个已解决的问题,我希望有人可以指向ELMAH补丁/分支/分支,其中包括记录会话数据而不是重新发明轮子.

一个奇怪的事情是来自Atif的旧帖子说他们已经记录了:

http://markmail.org/message/ncmdgwm5rmzewbwu

评论者henningst提到在这里添加会话变量:

http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx

另一种方法(我宁愿避免)是将值复制到cookie中

http://www.sharpdeveloper.net/content/archive/2008/11/10/how-to-get-session-or-other-custom-values-into-elmah.aspx

我知道一种替代方法是转换到ELMAH之外的东西(比如Exceptioneer - 请参阅http://exceptioneer.com/Public/ExceptioneerAndELMAH.aspx),但由于这是我目前ELMAH的唯一问题,我宁愿只有一个修补ELMAH而不是切换到别的东西.

elmah session-variables

9
推荐指数
1
解决办法
3269
查看次数

在SharePoint 2010中启用会话状态?

我有一个为SharePoint 2007构建的Web服务,我正在尝试移植到SharePoint 2010.此Web服务依赖于会话状态才能正常运行,但到目前为止,我已启用会话状态在SharePoint 2010中工作这个Web服务在/_vti_bin虚拟目录下作为自己的Web应用程序运行.我没有运气就尝试了以下所有方法:

  • 确保"State Service"服务应用程序正在运行.
  • System.Web.SessionState.SessionStateModulehttp模块添加到我的应用程序的web.config文件中.
  • System.Web.SessionState.SessionStateModulehttp模块添加到我的SharePoint根web.config文件中.
  • 添加<pages enableSessionState="true" />到我的应用程序的web.config文件中.
  • 添加<pages enableSessionState="true" />到我的根web.config文件中.

其他环境信息:

  • Visual Studio 2008 - SP1
  • .NET 3.5 - SP1
  • SharePoint 2010 - RC
  • Windows Server 2008 R2
  • ASMX Web服务(不是WCF)

有没有人有幸运行Web应用程序 Web服务以在SharePoint 2010中使用会话状态?

谢谢!

史蒂夫

.net c# session-variables session-state sharepoint-2010

9
推荐指数
2
解决办法
2万
查看次数

如何从外部PHP脚本编写/读取joomla会话变量时防止竞争条件?

质询

  • 会话数据的间歇性丢失是否可能是由于竞争条件造成的?如果不是,可能是什么问题?
  • 从外部php脚本编写/读取joomla会话变量时,如何防止竞争条件?

细节

我正在使用

  • Joomla 2.5
  • PHP 5.4.3
  • apache 2.2.22
  • mysql 5.5.24
  • 本地主机上的wampserver 2.
  • 我的脚本是Joomla的外部.
  • (cometchat版本3.0.1)

该脚本使用异步ajax请求多次获取和设置joomla变量.我在会话中存储的数据是一个数组.间歇性地,一些阵列数据丢失了.一旦用户登录并使用脚本,它似乎会更加一致.

说实话,我不确定问题是什么,但我开始认为我的代码正在遭遇竞争条件.我认为Joomla可能会在完成编写之前尝试读取会话信息,或者只是没有设置.缺失的信息似乎是随机选择的,并且间歇性地发生数据丢失.

SCRIPT1

脚本1使用异步ajax请求来获取/设置Joomla会话变量.这将被多次调用.由于设计原因,在ajax响应成功之前,不能再次调用脚本1.

$.ajax(
            {   cache:false,
                url: 'script2.php',
                data: { 'change': change},              
                dataType: 'json',               
                success: function(data) 
                {
                    //do something
                }
            });
Run Code Online (Sandbox Code Playgroud)

这是我在脚本2中用来访问Joomla和获取/设置会话数据的代码的粗略概念.

SCRIPT2

<?php
//some code omitted for brevity

$app = &JFactory::getApplication('site');/
$app->initialise();                     

$nottimedout=false;
$session = JFactory::getSession();
$jquizstart = date( 'Y-m-d H:i:s', time() );    //<<-- time of access       
$nottimedout = $session->has('jtimedout');

if ($nottimedout==true)
{
    $jqid = $session->get('jqid');                //<<-- get array …
Run Code Online (Sandbox Code Playgroud)

php session session-variables race-condition joomla2.5

9
推荐指数
1
解决办法
1401
查看次数

会话[]保留数据多长时间?

我试图使用一个会话,但当我需要值返回其null?

我的网站以登录开始,我将用户名放入会话.

Session["userName"] = login.UserName;
Run Code Online (Sandbox Code Playgroud)

然后该网站被重定向到新页面.

return RedirectToAction("Choice", new { token = token });
Run Code Online (Sandbox Code Playgroud)

巫婆之后我使用链接移动到我的下一页.

@Html.ActionLink("Download", "Download", new {token = Model.Token})
Run Code Online (Sandbox Code Playgroud)

我将我的代码指向家庭控制器中的动作结果,同一个控制器我有我的登录功能.

@Html.ActionLink("Download", "DownloadFile", new { fileid = item.Key, token = Model.Token, platform = "windows", filename = item.Value }, new {@class = "DownloadLink" } )
Run Code Online (Sandbox Code Playgroud)

我尝试再次调用我的会话值.

formMobiApi.GetFile(token, fileid, platform, filename, Session["userName"].ToString(), tasks, taskId, spreadSheetStatus);
Run Code Online (Sandbox Code Playgroud)

这些操作中的任何一个是否都可以使我的会话值为null?

我可以使用这样的会话吗?

asp.net session session-variables

9
推荐指数
1
解决办法
9691
查看次数

我什么时候应该在Joomla中使用setUserState?

细节

我可以使用用户状态变量来存储和检索Joomla会话中的数据.

示例设置变量

$app =& JFactory::getApplication();
$app->setUserState( 'myvar', $myvarvalue );
Run Code Online (Sandbox Code Playgroud)

但我也可以使用JFactory/getSession在会话中存储和检索变量.

示例设置变量

$session =& JFactory::getSession();
$session->set('myvar', $myvarvalue);
Run Code Online (Sandbox Code Playgroud)

问题

这两种方法有什么区别?我什么时候应该使用另一个?

php joomla session-variables session-state joomla2.5

9
推荐指数
1
解决办法
4518
查看次数

会话变量等效于OWIN自主机

我有一个在OWIN进程中托管的示例Web API(自托管,而不是在IIS中).我在我的控制器中获得了一个JWT令牌,我希望能够在应用程序的另一部分中进行检索,这是一个实现NserviceBus IMutateOutgoingTransportMessages的类.在我的其他Web应用程序POC(在IIS中托管)中,我使用了一个简单的会话变量,它工作得很好.但我想知道在我的新OWIN自托管环境中最好的方法是什么?静态类中的静态属性?

session-variables self-hosting owin katana

9
推荐指数
1
解决办法
1035
查看次数

如何在两台服务器之间共享 ASP.NET Core 3 中的会话?

如何在 ASP.NET Core 3 中的两台服务器之间共享会话(负载平衡)?会话可以在多个 Web 服务/API 和主 ASP.NET MVC 应用程序之间共享吗?

我对 .NET Core 3 非常陌生,我习惯于在 ASP.NET Framework MVC 中使用会话状态(它就像在站点的 IIS 配置中使用相同的机器密钥一样简单),但我已经了解到.NET Core 3 的一切都发生了变化,此外,随着新版本的推出,许多文档都非常过时/过时,.NET Core 1 与更高版本无关,2 与 3 无关,而且它需要许多 NuGet 包可能会或可能不会再工作。

目前我已经成功地使用 .NET Core 3 实现了 SQL 会话存储,但是机器密钥的选项不再出现在 IIS 中,我真的不知道如何在appsettings.json文件中配置它们(如果仍然使用的话)。

我们的设置是 2 个服务器,它们必须共享会话信息,使用 F5 负载平衡器,我们使用 .NET Framework MVC 的旧应用程序配置如下,我需要帮助来实现相同的结果,但使用 .NET Core 3。

我通读了https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/web-farm?view=aspnetcore-3.1但它并没有真正解释如何实际做任何事情

还有这个https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed?view=aspnetcore-3.1帮助配置了 SQL 会话存储,但不是如何在两台服务器之间共享

以及http://www.intstrings.com/ramivemula/articles/jumpstart-44-sql-server-based-session-state-in-asp-net-core-mvc-application/

c# session-variables session-state sql-session-state .net-core-3.0

9
推荐指数
1
解决办法
2264
查看次数