Tag: C#的

强制下载Web服务器上的文件 – ASP .NET C#

当用户单击基于ASP .NET(C#)的Web应用程序中的button时,我需要强制开始下载.sql文件。 如在单击该button时,另存为对话框应在客户端打开… 我如何做到这一点? 编辑 这是我正在使用的代码 string sql = ""; using (System.IO.StreamReader rdr = System.IO.File.OpenText(fileName)) { sql = rdr.ReadToEnd(); } Response.ContentType = "text/plain"; Response.AddHeader("Content-Disposition", "attachment; filename=Backup.sql"); Response.Write(sql); Response.End(); 这是我得到的错误… 替代文字http://img40.imageshack.us/img40/2103/erroro.gif 怎么了?

在UI线程上同步取消挂起的任务

有时,一旦我用CancellationTokenSource.Cancel请求取消挂起的任务,我需要确保任务已经正确到达取消状态 ,然后才能继续。 我经常遇到这种情况,当应用程序正在终止,我想优雅地取消所有挂起的任务。 但是,当新的后台进程只有在当前未完成的进程已经被完全取消或自然到达时才能启动,这也可以是UI工作stream规范的要求。 如果有人分享他/她的处理这种情况的方法,我将不胜感激。 我正在谈论以下模式: _cancellationTokenSource.Cancel(); _task.Wait(); 就像这样,在UI线程上使用它时很容易导致死锁。 但是,并不总是可以使用asynchronous等待(即await task ;例如,这是可能的情况之一)。 与此同时,简单地请求取消并且继续而不实际观察其状态是一种代码味道。 作为一个简单的例子来说明这个问题,我可能想确保在FormClosing事件处理程序中完全取消了以下的DoWorkAsync任务。 如果我不等待MainForm_FormClosing的_task ,我甚至可能不会看到当前工作项目的"Finished work item N"跟踪,因为应用程序终止于待处理子任务的中间(在池线程)。 如果我真的等待,结果会陷入僵局: public partial class MainForm : Form { CancellationTokenSource _cts; Task _task; // Form Load event void MainForm_Load(object sender, EventArgs e) { _cts = new CancellationTokenSource(); _task = DoWorkAsync(_cts.Token); } // Form Closing event void MainForm_FormClosing(object […]

为什么编译器支持多余的范围限定条件,这是合法的吗?

我在两个编译器上进行了testing,并且很惊讶地发现两者都支持以下定义而没有投诉: class A { A(); }; A::A::A() {} ^^^ 请注意,这也成功的方法,虽然它被标记时,声明是过分合格的。 问题: 这是一个有效的C ++程序吗? 如果是的话,它的目的是什么?还是仅仅是一个副产品? 更新详情: 如果原始问题不清楚或太短:我很好奇为什么在定义上允许多余的资格(重点还在上面加了)。 编译苹果公司的GCC 4.2 + LLVM

快速确切​​bigint阶乘

我有一个定点bumber数据库,并希望实现快速因子没有精度损失。 在纸上的一些math技巧之后,我得到了这个公式: (4N)!=((2N)!).((2N)!).{ (2N+1).(2N+3).(2N+5)…(4N-1) }.(2^N)/(N!) 这已经很快了,而且有些编程技巧的复杂性接近〜O ~ O(log(n)) 。 要清楚,我目前的实施是这样的: //————————————————————————— longnum fact(const DWORD &x,longnum &h) // h return (x>>1)! to speed up computation { if (x==0) { h=1; return 1; } if (x==1) { h=1; return 1; } if (x==2) { h=1; return 2; } if (x==3) { h=1; return 6; } if (x==4) […]

强制PHP整数溢出

我们有一些整数算术,由于历史的原因,在PHP上的工作方式与在一些静态types的语言中一样。 自从我们上次升级PHP以来,溢出整数的行为已经改变。 基本上我们使用下面的公式: function f($x1, $x2, $x3, $x4) { return (($x1 + $x2) ^ $x3) + $x4; } 但是,即使转换: function f($x1, $x2, $x3, $x4) { return intval(intval(intval($x1 + $x2) ^ $x3) + $x4); } 我仍然结束了完全错误的数字… 例如,在$ x1 = -1580033017,$ x2 = -2072974554,$ x3 = -1170476976)和$ x4 = -1007518822的情况下,我最终得到了PHP中的-30512150和C#中的1617621783。 只要加在一起$ x1和$ x2我不能得到正确的答案: 在C#中我得到 (-1580033017 + -2072974554) […]

CSVparsing选项与.NET

我正在查看基于一般MS堆栈和.net的分隔文件(例如CSV,制表符分隔等)parsing选项。 我唯一的技术是SSIS,因为我已经知道它不能满足我的需求。 所以我的select似乎是: Regex.Split TextFieldParser OLEDB CSVparsing器 我有两个标准,我必须满足。 首先,给出以下包含两个逻辑数据行的文件(以及总共五个物理行): 101, Bob, "Keeps his house ""clean"". Needs to work on laundry." 102, Amy, "Brilliant. Driven. Diligent." parsing的结果必须产生两个逻辑“行”,每个由三个string(或列)组成。 第三行/列string必须保留换行符! 换句话说,由于“未closures”的文本限定符,parsing器必须识别行何时“继续”到下一个物理行。 第二个标准是分隔符和文本限定符必须是可configuration的,每个文件。 这里有两个string,取自不同的文件,我必须能够parsing: var first = @"""This"",""Is,A,Record"",""That """"Cannot"""", they say,"","""",,""be"",rightly,""parsed"",at all"; var second = @"~This~|~Is|A|Record~|~ThatCannot~|~be~|~parsed~|at all"; string“first”的正确parsing是: 这个 是,A,logging 他们说,“不能” _ _ 是 正当地 parsing的 在所有 '_'仅仅意味着空白被捕获 – […]

清除浏览器closures的Cookie

当用户closures浏览器时,如何清除通过我的asp.net mvc(C#)应用程序存储的cookie? 是否有任何选项可以创build一个cookie,使浏览器closures后过期? 我需要使用cookie,因为我将存储一些值,直到浏览器closures。 例如,在login期间,我可以将用户标识存储在cookie中,我可以将其用于我的应用程序进程,直到bwoserclosures。 会话将在一段时间后过期,我需要使用cookie来克服

最简单的方法来parsingJSON响应

有没有什么简单的方法来parsingJSOn下c# {"type":"text","totalprice":"0.0045","totalgsm":"1","remaincredit":"44.92293","messages": [ {"status":"1","messageid":"234011120530636881","gsm":"923122699633"} ]} 并在多个结果的情况下。

序列化一个包含std :: string的类

我不是一个C ++专家,但是我已经在过去几次序列化了一些东西。 不幸的是,这次我试图序列化一个包含一个std :: string的类,我理解它非常像序列化一个指针。 我可以把这个类写出来,然后再读回来。 所有的int字段都可以,但std :: string字段给出了一个“address out of bounds”的错误,大概是因为它指向的数据已经不存在了。 有没有一个标准的解决方法呢? 我不想回到char数组,但至less我知道他们在这种情况下工作。 如有必要,我可以提供代码,但是我希望能够很好地解释我的问题。 我通过将类转换为char *并将其写入fstream文件来序列化。 当然,阅读正好相反。

两个string文字的连接是如何工作的?

char* a="dsa" "qwe"; printf("%s",a); 输出:dsaqwe 我的问题是为什么这个工作。 如果我给两个string文字之间的空格或空格,它连接string文字。 这是如何工作的?