HttpStatusCodeResult(401)返回“302 Found”

使用ASP.NET MVC 5,我想为不同的场景返回适当的HTTP状态代码(401用户未经过身份validation,403当用户无权使用某些资源时等),而不是在jQuery中处理它们。 但问题是,当我尝试返回401时,它总是返回“302:Found”。 自定义状态代码的技巧是什么,以及为什么这不起作用? public ActionResult My() { if (User.Identity.IsAuthenticated == false) { return new HttpStatusCodeResult(401, “User is not authenticated.”); // Returns “302: Found” } // … other code … } 编辑1:有趣的位: 如果我用这样的404替换401: return new HttpNotFoundResult(“User is not authenticated.”); 然后它确实给出了一个404和jQuery可以捕获的问题。 然而,由于错误代码不同,它不是一个优雅的解决方案。 编辑2: 302对我不好,因为结果将在jQuery.get().fail() ,但302不会triger fail()

如何从DateTimePicker控件(Windows窗体控件)中删除“今天”按钮

在DateTimePicker控件中,当我们单击下拉按钮时,将显示日历。 在日历的底部,有一个按钮:今天,在点击时,将当前日期设置为所选日期。 我想从控件中删除/隐藏该按钮。 我该怎么做?

c#cywgwin mono mkbundle windows 7 – 无法编译文件

我正在尝试按照以下post使用cygwin构建带嵌入式单声道的ac#app。 我在这里遵循指南: 如何使用Mono和mkbundle将简单的.Net控制台项目转换为便携式exe? 我收到的错误是: “gcc:-mno-cygwin标志已被删除;使用一个以mingw为目标的交叉编译器。” 我不确定如何解决这个问题 – 任何人都可以提出建议吗? 我正在使用:Windows 7 x64,Mono 2.4.3,cygwin 7.1 beta(支持Windows 7)。 谢谢, 坦率

从目录中选择随机文件

我已经看过一些例子但到目前为止在C#中都没有,在目录下选择随机文件的最佳方法是什么? 在这种特殊情况下,我想每隔15分钟从“C:\ wallpapers”中选择一个壁纸。 谢谢。

如何防止ListBox.SelectedIndexChanged事件?

我在我的C#2.0 Windows窗体应用程序中使用了一个列表框。 填充列表框的方法是 private void PopulateListBox(ListBox lb, ReportColumnList reportColumnList) { lb.DataSource = reportColumnList.ReportColumns; lb.DisplayMember = “ColumnName”; lb.ValueMember = “ColumnName”; } 但是,当它执行该方法时,它也会调用列表框的SelectedIndexChanged事件处理程序,即使我没有在上面的方法中设置所选索引。 如何阻止为上述代码调用SelectedIndexChanged事件处理程序? 我希望仅在用户在ListBox中进行选择时才调用该事件。 或者是否有任何其他事件仅供用户使用鼠标单击选择列表框项目? 另外,即使用户单击列表框中的空白区域,也会触发SelectedIndexChanged事件。 所以我想知道它与MouseClick事件有何不同?

将一个进程对象的stdout重定向到另一个进程对象的stdin

如何设置两个外部可执行文件从ac#应用程序运行,其中第一个stdout从第二个路由到stdin? 我知道如何使用Process对象运行外部程序,但我没有看到像“myprogram1 -some -options | myprogram2 -some -options”这样的方法。 我还需要捕获第二个程序的stdout(示例中的myprogram2)。 在PHP中我会这样做: $descriptorspec = array( 1 => array(“pipe”, “w”), // stdout ); $this->command_process_resource = proc_open(“myprogram1 -some -options | myprogram2 -some -options”, $descriptorspec, $pipes); $ pipes [1]将成为链中最后一个程序的标准输出。 有没有办法在c#中实现这一目标?

List AddToFront(T对象)的扩展方法如何?

我想为List类编写一个扩展方法,它接受一个对象并将其添加到前面而不是后面。 扩展方法真让我迷惑。 有人可以帮我解决这个问题吗? myList.AddToFront(T object);

为什么定时器让我的对象保持活着?

前言 :我知道如何解决问题。 我想知道它为什么会出现。 请从上到下阅读问题。 正如我们都应该知道的那样,添加事件处理程序会导致C#中的内存泄漏。 请参阅为什么以及如何避免事件处理程序内存泄漏? 另一方面,对象通常具有相似或相关的生命周期,并且不需要取消注册事件处理程序。 考虑这个例子: using System; public class A { private readonly B b; public A(B b) { this.b = b; b.BEvent += b_BEvent; } private void b_BEvent(object sender, EventArgs e) { // NoOp } public event EventHandler AEvent; } public class B { private readonly A a; public B() { […]

这个PInvoke代码是否正确可靠?

在这个问题中,我搜索了一个解锁文件的简单解决方案。 感谢所有的评论和回答,我找到了PInvoking DeleteFile的简单解决方案。 它工作,但因为我从来没有通过PInvoke(Win32)使用文件操作,我不知道是否有一些陷阱或是否有另一种方法调用DeleteFile来删除文件的备用流。 我还不知道的是,我是否必须在try / catch中包装调用,或者仅仅查看布尔结果就足够了。 在我的测试中,没有提出exception,但我不知道在现实世界中会发生什么。 public class FileUnblocker { [DllImport(“kernel32”, CharSet = CharSet.Unicode, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool DeleteFile(string name ); public bool Unblock(string fileName) { return DeleteFile(fileName+ “:Zone.Identifier”); } } 这段代码看起来可靠吗? 更新 我发布了一个不完整的方法(unblock方法没有将“Zone.Identifier”文字连接到文件名)。 我现在纠正了这个,抱歉。

从DB读取布尔值?

在C#中,使用SqlDataReader,有没有办法从DB读取布尔值? while (reader.Read()) { destPath = reader[“destination_path”].ToString(); destFile = reader[“destination_file”].ToString(); createDir = reader[“create_directory”].ToString(); deleteExisting = Convert.ToBoolean(reader[“delete_existing”]); skipIFolderDate = reader[“skipifolderdate”].ToString(); useTempFile = reader[“useTempFile”].ToString(); password = reader[“password”].ToString(); } 在上面的代码中,delete_existing在DB中始终为1或0。 我在MSDN上读到,Convert.ToBoolean()不接受1或0作为有效输入。 它只接受真或假。 有没有其他方法将DB值转换为bool? 或者我是否需要在SqlDataReader之外执行此操作? 此外,我无法更改数据库值,因此请不要回答“将数据库值从1和0更改为true和false”。 谢谢!