我基本上使用 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, …
在调试我们的系统问题时,我发现线程争用导致了瓶颈。我需要向参与处理此问题的其他人解释这一现象。其中一些不是来自开发团队(但是,他们具有相当的技术性)。那么什么类型的图表可以用来描述线程问题,例如争用、死锁等?一些例子会非常有用。
这是我正在使用的代码:
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的内存使用量.有没有办法可以保持这个过程的速度并限制它使用的内存?或者让它读取并转储并继续?哈希表?任何想法都会很棒.
有谁知道Windows中时区名称的已编译翻译列表?我需要全部75个左右的德语,法语和西班牙语.或者,我如何使用.Net编译这样的列表?
示例格式:(GMT + 01:00)贝尔格莱德,布拉迪斯拉发,布达佩斯,卢布尔雅那,布拉格
我想我遗漏了一些关于站点地图的明显信息.
我正在尝试使用转发器为我们网站上的新站点地图生成一些导航.但我不想使用我们正常的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)
应该这样做,但没有骰子.
我错过了什么?
我最近写了一个简单的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上工作,并且两者之间的转换并不简单.
我正在使用 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?
我在c sharp中有以下正则表达式来检查提供的密码是否正确
Regex.IsMatch(password, "^.*(?=.{10,})(?=.*[0-9]|[@#$%^&+=])(?=.*[a-z])(?=.*[A-Z]).*$")
Run Code Online (Sandbox Code Playgroud)
为什么上述工作不顺利?
它采取abcdefgh123但不是abcdefgh&+
我在git下有一个大型的C项目.其他人有相同的C项目,但他没有使用git.
我们俩都是从相同的基线开始的,但我只是做了git init/ git add .并开始使用git.
我想将我的git托管更改合并到其他分支并在他的项目文件夹中使用init git,这样我们就会同步并使用git.
你会怎么用git做这个?
我想将FormsAuthentication cookie设置为超时但是VIA CODE.我知道我可以在web.config中执行此操作,但我想在数据库中进行配置.这可以通过代码吗?
<system.web>
<authentication mode="Forms">
<forms timeout="50000000"/>
</authentication>
</system.web>
Run Code Online (Sandbox Code Playgroud)