小编Kiq*_*net的帖子

ASP.NET MVC - 设置自定义IIdentity或IPrincipal

我需要做一些相当简单的事情:在我的ASP.NET MVC应用程序中,我想设置一个自定义IIdentity/IPrincipal.哪个更容易/更合适.我想要扩展默认值,以便我可以调用类似User.Identity.IdUser.Identity.Role.没什么特别的,只是一些额外的属性.

我已经阅读了大量的文章和问题,但我觉得我做得比实际更难.我觉得这很容易.如果用户登录,我想设置自定义IIdentity.所以我想,我将Application_PostAuthenticateRequest在我的global.asax中实现.但是,每次请求都会调用它,并且我不希望在每个请求上调用数据库,这些请求将从数据库请求所有数据并放入自定义IPrincipal对象.这似乎也是非常不必要,缓慢,并且在错误的地方(在那里进行数据库调用)但我可能是错的.或者数据来自何处?

所以我想,每当用户登录时,我都可以在我的会话中添加一些必要的变量,我将其添加到Application_PostAuthenticateRequest事件处理程序中的自定义IIdentity中.但是,我Context.Sessionnull那里,所以这也不是要走的路.

我已经在这一天工作了一天,我觉得我错过了什么.这不应该太难,对吧?我也对此附带的所有(半)相关内容感到困惑.MembershipProvider,MembershipUser,RoleProvider,ProfileProvider,IPrincipal,IIdentity,FormsAuthentication....我是唯一一个谁发现这一切非常混乱?

如果有人能告诉我一个简单,优雅,高效的解决方案,可以在IIdentity上存储一些额外的数据而不需要额外的模糊...这将是非常棒的!我知道在SO上有类似的问题,但如果我需要的答案就在那里,我一定会忽略.

asp.net asp.net-mvc forms-authentication iprincipal iidentity

638
推荐指数
5
解决办法
21万
查看次数

234
推荐指数
12
解决办法
28万
查看次数

为什么Response.Redirect导致System.Threading.ThreadAbortException?

当我使用Response.Redirect(...)将表单重定向到新页面时,我收到错误:

mscorlib.dll中出现"System.Threading.ThreadAbortException"类型的第一次机会异常mscorlib.dll中
出现"System.Threading.ThreadAbortException"类型的异常,但未在用户代码中处理

我对此的理解是,错误是由Web服务器中止调用response.redirect的页面的其余部分引起的.

我知道我可以添加第二个参数Response.Redirect,称为endResponse.如果我将endResponse设置为True,我仍然会收到错误,但如果我将其设置为False,那么我不会.我很确定,这意味着网络服务器正在运行我重定向的页面的其余部分.至少可以说这似乎效率低下.有一个更好的方法吗?除了Response.Redirect或有没有办法迫使旧页面停止加载我不会得到的东西ThreadAbortException

c# asp.net .net-3.5

227
推荐指数
6
解决办法
14万
查看次数

提交带有查询字符串参数的GET表单和隐藏的参数消失

考虑这种形式:

<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正在消失.这有什么理由吗?有没有办法避免这种行为?

html forms submit

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

如何从Visual Studio 2013向GitHub添加现有解决方案

我已经浏览了许多关于VS 2013中新Git集成的网页,他们没有处理向Github添加现有解决方案的问题.事实上,我在使用GitHub而不是Visual Studio Online方面找不到多少.

谁能告诉我如何从现有解决方案开始并使用VS 2013中的工具将其添加到Github.

git github visual-studio-2013

207
推荐指数
5
解决办法
13万
查看次数

有没有办法通过服务器端API将事件发布到Google Analytics?

我正在尝试通过向我们的后端系统发布事件来使用Google Analytics.有没有办法在服务器端使用GA的API?

api analytics google-analytics

171
推荐指数
3
解决办法
7万
查看次数

单元测试:DateTime.Now

我有一些单元测试,希望'当前时间'与DateTime不同.现在我不想改变计算机的时间.

实现这一目标的最佳策略是什么?

c# datetime unit-testing mstest systemtime

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

如何合并2 List <T>并删除C#中的重复值

我有两个列表列表,我需要组合并删除两个列表的重复值

有点难以解释,所以让我展示代码的样子,以及我想要的结果,在示例中我使用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)

c# merge list duplicates

142
推荐指数
5
解决办法
13万
查看次数

创建两个日期之间的所有日期的数组或列表

我正在生成带有沿X轴的日期的多系列图.

问题是并非图中的所有系列在日期范围内都具有相同的日期.这意味着,如果我选择2月1日到4月30日,那么一个系列可能有数据从2月1日开始,但只持续到3月底,但另一个系列可能有整个日期范围的数据.

这会扭曲我需要创建的图表.去,给定在查询开始时采用的日期范围,我想生成一个日期列表并填充要绘制的数据,用那些没有数据的日期填充0的系列.

c# asp.net list

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

如何使用c#执行.SQL脚本文件

我确定这个问题已经得到解答,但我无法使用搜索工具找到答案.

使用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# sql oracle scripting

128
推荐指数
6
解决办法
25万
查看次数