小编Gre*_*reg的帖子

登录后立即在 ActionFilter 中检查 User.Identity.IsAuthenticated

我基本上使用 ASP.NET MVC 示例中的 AccountController。它使用 FormsAuthentication 来处理用户登录。可以肯定的是,这里是处理用户登录的代码:

    public ActionResult LogOn(string userName, string password, bool rememberMe, string returnUrl)
    {
      if (!ValidateLogOn(userName, password))
      {
        return View();
      }

      FormsAuth.SignIn(userName, rememberMe);


      //Session["userId"] = 1;


      if (!String.IsNullOrEmpty(returnUrl))
      {
        return Redirect(returnUrl);
      }
      else
      {
        return RedirectToAction("Index", "Home");
      }
    }
Run Code Online (Sandbox Code Playgroud)

从注释行中可以看出,我想在此方法中设置一个 Session 变量。但是,我认为这不是直接在控制器中设置 Session 变量的最优雅的方式。对这个方法进行单元测试也很不方便(虽然我可以模拟它,当然,但仍然如此)。

所以,我想,我创建了一个在此登录例程之后运行的自定义 ActionFilterAttribute。如果登录成功,请在此自定义属性中设置会话变量。代码如下:

  public class SetSessionAttribute : ActionFilterAttribute
  {
    public override void OnResultExecuted(ResultExecutedContext resultContext)
    {      
      if (resultContext.HttpContext.User.Identity.IsAuthenticated)
      {
        resultContext.HttpContext.Session["userId"] = 1;
      }

      base.OnResultExecuted(resultContext);
    }
  }
Run Code Online (Sandbox Code Playgroud)

问题是User.Identity.IsAuthenticated在下一次“页面加载”之前总是返回 false。我正在重写,OnResultExecuted因为我认为它是页面生命周期中最后一个要调用的方法,但没有运气。我也试过OnActionExecuting, …

asp.net-mvc forms-authentication action-filter

5
推荐指数
1
解决办法
3488
查看次数

什么类型的图表最适合可视化线程问题(例如争用)?

在调试我们的系统问题时,我发现线程争用导致了瓶颈。我需要向参与处理此问题的其他人解释这一现象。其中一些不是来自开发团队(但是,他们具有相当的技术性)。那么什么类型的图表可以用来描述线程问题,例如争用、死锁等?一些例子会非常有用。

diagram multithreading deadlock contention

5
推荐指数
1
解决办法
1369
查看次数

C#directory.getfiles内存帮助

这是我正在使用的代码:

using (StreamWriter output = new StreamWriter(Path.Combine(masterdestination, "Master.txt")))
{
     string masterfolders = sourcefolder1;
     string[] filess = Directory.GetFiles(masterfolders, "*.txt");
     foreach (string file in filess)
     {
        output.WriteLine(Path.GetFileName(file));
     }
}  
Run Code Online (Sandbox Code Playgroud)

此代码将搜索用户指定目录中任何txt文件的所有文件.这些目录有时包含2百万个文件.

在它运行时监视这个过程我已经看到它爬升到800MB的内存使用量.有没有办法可以保持这个过程的速度并限制它使用的内存?或者让它读取并转储并继续?哈希表?任何想法都会很棒.

c#

5
推荐指数
1
解决办法
2803
查看次数

有人知道翻译时区描述的来源吗?

有谁知道Windows中时区名称的已编译翻译列表?我需要全部75个左右的德语,法语和西班牙语.或者,我如何使用.Net编译这样的列表?

示例格式:(GMT + 01:00)贝尔格莱德,布拉迪斯拉发,布达佩斯,卢布尔雅那,布拉格

windows timezone internationalization

4
推荐指数
2
解决办法
2209
查看次数

如何在ASP.NET中使用多个.sitemap文件

我想我遗漏了一些关于站点地图的明显信息.

我正在尝试使用转发器为我们网站上的新站点地图生成一些导航.但我不想使用我们正常的Web.sitemap文件,我想使用我们的新文件......我们称之为"Web.NEW.sitemap".

代码似乎有点明显......

<asp:Repeater ID="rptMyRepeater" DataSourceID="mySitemap" runat="server">
    <ItemTemplate>
        blah blah blah
    </ItemTemplate>
</asp:Repeater>

<asp:SiteMapDataSource ID="mySitemap" runat="server" />
Run Code Online (Sandbox Code Playgroud)

但是如何让SiteMapDataSource使用Web.NEW.sitemap而不是默认的站点地图?我想添加一个属性,如:

SiteMapProvider="Web.NEW.sitemap"
Run Code Online (Sandbox Code Playgroud)

应该这样做,但没有骰子.

我错过了什么?

sitemap asp.net

4
推荐指数
1
解决办法
1万
查看次数

由于浮点数的二进制存储,避免意外行为的最佳方法是什么?

我最近写了一个简单的for循环,并得到了一些意想不到的行为:

for(double x = 0.0; x <= 1.0; x += 0.05)
{
    Console.WriteLine(x.ToString());
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
0.55
0.6
0.65
0.7
0.75
0.8
0.85
0.9
0.95
Run Code Online (Sandbox Code Playgroud)

请注意,即使继续for循环的条件似乎包含它,也不会出现1.我意识到这是因为十进制数字作为二进制存储在内存中, 1实际上不是1,而是实际上是1.0000000000000002(根据Visual Studio中的变量监视).所以我的问题是,避免这种意外行为的最佳方法是什么?一种方法是使用decimal类型而不是double,但大多数System.Math函数double仅在s上工作,并且两者之间的转换并不简单.

.net c# binary

4
推荐指数
1
解决办法
128
查看次数

c# datetimepicker:如何获取格式中的日期?2001 年 1 月 1 日

我正在使用 winforms、c#、Visual Studio 2008

日期时间选择器上的格式设置为short这意味着它将只显示这样的日期1/1/2001

然而,我无法只得到那个而不是时间,

例如这个:

MessageBox.Show(dateTimePicker1.Value.Date.ToString());
Run Code Online (Sandbox Code Playgroud)

给了我这个:

11/4/2010 12:00:00AM
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到正义11/4/2010

.net c# winforms

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

字符串正则表达式不起作用

我在c sharp中有以下正则表达式来检查提供的密码是否正确

  • 超过10个字符
  • 应该至少有一个小写字符
  • 应该至少有一个大写字符
  • 应该有一个数字或一个特殊字符

Regex.IsMatch(password, "^.*(?=.{10,})(?=.*[0-9]|[@#$%^&+=])(?=.*[a-z])(?=.*[A-Z]).*$")
Run Code Online (Sandbox Code Playgroud)

为什么上述工作不顺利?

它采取abcdefgh123但不是abcdefgh&+

c# regex

4
推荐指数
1
解决办法
360
查看次数

克隆git repo到非空文件夹

我在git下有一个大型的C项目.其他人有相同的C项目,但他没有使用git.

我们俩都是从相同的基线开始的,但我只是做了git init/ git add .并开始使用git.

我想将我的git托管更改合并到其他分支并在他的项目文件夹中使用init git,这样我们就会同步并使用git.

你会怎么用git做这个?

git git-merge git-clone git-remote

4
推荐指数
1
解决办法
2209
查看次数

我想将FormsAuthentication cookie设置为超时但是VIA CODE

我想将FormsAuthentication cookie设置为超时但是VIA CODE.我知道我可以在web.config中执行此操作,但我想在数据库中进行配置.这可以通过代码吗?

<system.web>
        <authentication mode="Forms">
              <forms timeout="50000000"/>
        </authentication>
    </system.web>
Run Code Online (Sandbox Code Playgroud)

asp.net security forms-authentication

3
推荐指数
1
解决办法
3171
查看次数