我需要做一些相当简单的事情:在我的ASP.NET MVC应用程序中,我想设置一个自定义IIdentity/IPrincipal.哪个更容易/更合适.我想要扩展默认值,以便我可以调用类似User.Identity.Id
和User.Identity.Role
.没什么特别的,只是一些额外的属性.
我已经阅读了大量的文章和问题,但我觉得我做得比实际更难.我觉得这很容易.如果用户登录,我想设置自定义IIdentity.所以我想,我将Application_PostAuthenticateRequest
在我的global.asax中实现.但是,每次请求都会调用它,并且我不希望在每个请求上调用数据库,这些请求将从数据库请求所有数据并放入自定义IPrincipal对象.这似乎也是非常不必要,缓慢,并且在错误的地方(在那里进行数据库调用)但我可能是错的.或者数据来自何处?
所以我想,每当用户登录时,我都可以在我的会话中添加一些必要的变量,我将其添加到Application_PostAuthenticateRequest
事件处理程序中的自定义IIdentity中.但是,我Context.Session
在null
那里,所以这也不是要走的路.
我已经在这一天工作了一天,我觉得我错过了什么.这不应该太难,对吧?我也对此附带的所有(半)相关内容感到困惑.MembershipProvider
,MembershipUser
,RoleProvider
,ProfileProvider
,IPrincipal
,IIdentity
,FormsAuthentication
....我是唯一一个谁发现这一切非常混乱?
如果有人能告诉我一个简单,优雅,高效的解决方案,可以在IIdentity上存储一些额外的数据而不需要额外的模糊...这将是非常棒的!我知道在SO上有类似的问题,但如果我需要的答案就在那里,我一定会忽略.
asp.net asp.net-mvc forms-authentication iprincipal iidentity
当我使用Response.Redirect(...)将表单重定向到新页面时,我收到错误:
mscorlib.dll中出现"System.Threading.ThreadAbortException"类型的第一次机会异常mscorlib.dll中
出现"System.Threading.ThreadAbortException"类型的异常,但未在用户代码中处理
我对此的理解是,错误是由Web服务器中止调用response.redirect的页面的其余部分引起的.
我知道我可以添加第二个参数Response.Redirect
,称为endResponse.如果我将endResponse设置为True,我仍然会收到错误,但如果我将其设置为False,那么我不会.我很确定,这意味着网络服务器正在运行我重定向的页面的其余部分.至少可以说这似乎效率低下.有一个更好的方法吗?除了Response.Redirect
或有没有办法迫使旧页面停止加载我不会得到的东西ThreadAbortException
?
考虑这种形式:
<form action="http://www.blabla.com?a=1&b=2" method="GET">
<input type="hidden" name="c" value="3" />
</form>
Run Code Online (Sandbox Code Playgroud)
提交此表格(GET表格)时,参数a和b正在消失.这有什么理由吗?有没有办法避免这种行为?
我已经浏览了许多关于VS 2013中新Git集成的网页,他们没有处理向Github添加现有解决方案的问题.事实上,我在使用GitHub而不是Visual Studio Online方面找不到多少.
谁能告诉我如何从现有解决方案开始并使用VS 2013中的工具将其添加到Github.
我正在尝试通过向我们的后端系统发布事件来使用Google Analytics.有没有办法在服务器端使用GA的API?
我有一些单元测试,希望'当前时间'与DateTime不同.现在我不想改变计算机的时间.
实现这一目标的最佳策略是什么?
我有两个列表列表,我需要组合并删除两个列表的重复值
有点难以解释,所以让我展示代码的样子,以及我想要的结果,在示例中我使用int类型而不是ResultAnalysisFileSql类.
first_list = [1,12,12,5]
second_list = [12,5,7,9,1]
组合这两个列表的结果应该产生这个列表:resul_list = [1,12,5,7,9]
你会注意到结果有第一个列表,包括它的两个"12"值,而在second_list中有一个额外的12,1和5值.
ResultAnalysisFileSql类
[Serializable]
public partial class ResultAnalysisFileSql
{
public string FileSql { get; set; }
public string PathFileSql { get; set; }
public List<ErrorAnalysisSql> Errors { get; set; }
public List<WarningAnalysisSql> Warnings{ get; set; }
public ResultAnalysisFileSql()
{
}
public ResultAnalysisFileSql(string fileSql)
{
if (string.IsNullOrEmpty(fileSql)
|| fileSql.Trim().Length == 0)
{
throw new ArgumentNullException("fileSql", "fileSql is null");
}
if (!fileSql.EndsWith(Utility.ExtensionFicherosErrorYWarning))
{
throw new ArgumentOutOfRangeException("fileSql", "Ruta de fichero Sql no tiene …
Run Code Online (Sandbox Code Playgroud) 我正在生成带有沿X轴的日期的多系列图.
问题是并非图中的所有系列在日期范围内都具有相同的日期.这意味着,如果我选择2月1日到4月30日,那么一个系列可能有数据从2月1日开始,但只持续到3月底,但另一个系列可能有整个日期范围的数据.
这会扭曲我需要创建的图表.去,给定在查询开始时采用的日期范围,我想生成一个日期列表并填充要绘制的数据,用那些没有数据的日期填充0的系列.
我确定这个问题已经得到解答,但我无法使用搜索工具找到答案.
使用c#我想运行一个.sql文件.sql文件包含多个sql语句,其中一些语句分为多行.我尝试在文件中读取并尝试使用ODP.NET执行文件...但是我不认为ExecuteNonQuery真的是为了这样做而设计的.
所以我尝试通过生成一个进程来使用sqlplus ...但是除非我将UseShellExecute设置为true而生成进程,否则sqlplus会挂起并永远不会退出.这是不起作用的代码.
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "sqlplus";
p.StartInfo.Arguments = string.Format("xx/xx@{0} @{1}", in_database, s);
p.StartInfo.CreateNoWindow = true;
bool started = p.Start();
p.WaitForExit();
Run Code Online (Sandbox Code Playgroud)
WaitForExit永远不会返回....除非我将UseShellExecute设置为true.UseShellExecute的副作用是您无法捕获重定向的输出.
c# ×5
asp.net ×3
list ×2
.net-3.5 ×1
analytics ×1
api ×1
asp.net-mvc ×1
datetime ×1
duplicates ×1
forms ×1
git ×1
github ×1
html ×1
iidentity ×1
iprincipal ×1
merge ×1
mstest ×1
oracle ×1
powershell ×1
scripting ×1
sql ×1
submit ×1
systemtime ×1
unit-testing ×1
zip ×1