Tag: asp.net

读取二进制文件并使用Response.BinaryWrite()

我有一个应用程序需要从文件系统中读取PDF文件,然后将其写出给用户。 PDF为183KB,似乎完美无缺。 当我使用底部的代码时,浏览器获取一个224KB的文件,我从Acrobat Reader收到一条消息,说文件已损坏且无法修复。 这是我的代码(我也尝试过使用File.ReadAllBytes(),但我得到了相同的东西): using (FileStream fs = File.OpenRead(path)) { int length = (int)fs.Length; byte[] buffer; using (BinaryReader br = new BinaryReader(fs)) { buffer = br.ReadBytes(length); } Response.Clear(); Response.Buffer = true; Response.AddHeader(“content-disposition”, String.Format(“attachment;filename={0}”, Path.GetFileName(path))); Response.ContentType = “application/” + Path.GetExtension(path).Substring(1); Response.BinaryWrite(buffer); }

事件冒泡和MVP:ASP.NET

我正在努力学习MVP 它在ASP.NET中使用Web表单。 我有两个用户控件CurrentTimeView.ascx和MonthViewControl.ascx。 CurrentTimeView显示时间。 有一个文本框可以在同一个控件中添加天数。 新获得的日期称为“结果日期”。 单击按钮添加天数时,会引发一个事件“myBtnAddDaysClickedEvent”。 在MonthViewControl上,有一个标签显示“结果日期”的月份。 目前我正在为变量“monthValueToPass”设置一个样本值(因为我不知道如何正确地做到这一点)。 如何设置monthValueToPass变量的值以使其符合MVP模型? string monthValueToPass = “TEST”; monthPresenter.SetMonth(monthValueToPass); 期望是创建易于进行unit testing的MVP,并且不违反MVP架构。 注意:虽然这是一个简单的例子,但我期待使用MVP和validation机制在GridView控件中进行数据绑定的scalablt回答。 注意:可以查看完全独立的演示者吗? 注意:每个用户控件都是单独的视图 注意:同一个演示者可以有多个视图(对于不同用户的不同控件,基于他们的认可吗?) 指南 模型视图演示者 – 指南 – 完整代码 – using System; public interface ICurrentTimeView { //Property of View DateTime CurrentTime { set; } //Method of View void AttachPresenter(CurrentTimePresenter presenter); } using System; public interface IMonthView { […]

填充MemoryStream时OutOfMemoryException:在16GB系统上分配256MB

我在我的开发IIS服务器(来自VS2010 IDE)上运行以下方法,在64位Windows 7计算机上安装了16 GB RAM: public static MemoryStream copyStreamIntoMemoryStream(Stream stream) { long uiLen = stream.Length; byte[] buff = new byte[0x8000]; int nSz; MemoryStream ms = new MemoryStream(); try { while ((nSz = stream.Read(buff, 0, buff.Length)) != 0) { ms.Write(buff, 0, nSz); } } finally { Debug.WriteLine(“Alloc size=” + ms.Length); } return ms; } 我在这一行得到System.OutOfMemoryException : […]

如何实现网页的实时数据

(这是一个Q / A风格的问题,旨在成为那些提出类似问题的人的首选资源。很多人似乎偶然发现这样做的最佳方式,因为他们不知道所有的选择许多答案都是ASP.NET特有的,但AJAX和其他技术确实在其他框架中具有等价物,例如socket.io和SignalR。) 我有一个我在ASP.NET中实现的数据表。 我希望实时或接近实时地显示页面上此基础数据的更改。 我该怎么办? 我的型号: public class BoardGame { public int Id { get; set;} public string Name { get; set;} public string Description { get; set;} public int Quantity { get; set;} public double Price { get; set;} public BoardGame() { } public BoardGame(int id, string name, string description, int quantity, double […]

使用log4net捕获用户名

我目前将所有log4net事件写入数据库,它似乎工作正常。 要捕获登录的用户帐户,我使用以下代码: HttpContext context = HttpContext.Current; if (context != null && context.User != null && context.User.Identity.IsAuthenticated) { MDC.Set(“user”, HttpContext.Current.User.Identity.Name); } 代码似乎没问题,除了没有与之关联的用户上下文的事件(即我们公共网页上的用户)。 在这种情况下,log4net捕获似乎有时写入最后登录的用户帐户(坏),有时写入空(好)。 任何人都有这个function在所有情况下都可靠地工作? 我相信我看到一条说明MDC不再是推荐使用的function,但我无法找到任何推荐的替代品。 注意:我发现MDC设置了帐户名称很奇怪,但如果没有用户处于活动状态,则永远不会清除。 这可能是问题的一部分。 但是,我没有找到任何也清除用户名的MDC代码提取。

将值数组发送到Oracle过程以在WHERE IN子句中使用

我在Oracle中有一个存储过程,如下所示: CREATE PROCEDURE MY_TEST_PROC( CUR OUT SYS_REFCURSOR, PARAM_THAT_WILL_BE _USED_INSIDE_WHERE_IN ) AS BEGIN OPEN CUR FOR SELECT * FROM MY_TABLE WHERE COL1 IN (here I want to put values received from C#) END; 在ASP.NET应用程序端,我有一个包含多个选项的select元素。 我想在WHERE子句中使用这些列表项。 我知道我可以在我的存储过程中有一个VARCHAR2输入参数,从列表项中创建一个逗号分隔的字符串,然后将其发送到过程。 这样做有两个问题: 我使我的网站容易受到SQL注入攻击 在我的存储过程中,我必须使用我想避免的EXECUTE(’SELECT …’)模式。 如何将这些列表项发送到存储过程并在WHERE IN子句中使用它们? 我正在使用ODP.NET并听说过UDT但不知道如何使用它。

跨子域的表单身份validation

当身份validation发生在子域而不是父域时,是否可以跨子域validation用户? 例如: 用户登录到site1.parent.com,然后我们需要将它们发送到reporting.parent.com。 即使在子域中发生登录,我是否可以对报告站点进行身份validation? 到目前为止,我所做的所有研究都让用户首先登录到父域,然后每个子域都可以访问身份validationcookie。

为什么我们的项目需要接口层/抽象类?

我们通常在项目中使用抽象函数/接口。 为什么真的需要它? 为什么我们不能只去商业逻辑层,数据访问层和表示层 表示层中的function: abc(); 业务逻辑层中的function: public void abc() { //Preparing the list } 数据访问层中的function: public abstract void abc(); 数据访问SQLServer层中的function: public override void abc() { //Connection with database } 问题是:为什么需要数据访问层?

ASP.NET Identity的默认密码哈希 – 它是如何工作的并且是否安全?

我想知道在MVC 5和ASP.NET Identity Framework附带的UserManager中默认实现的Password Hasher是否足够安全? 如果是这样,如果你可以向我解释它是如何工作的? IPasswordHasher界面如下所示: public interface IPasswordHasher { string HashPassword(string password); PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string providedPassword); } 正如你所看到的,它不需要盐,但是在这个post中提到:“ Asp.net身份密码哈希 ”,它确实在幕后加盐。 所以我想知道它是如何做到的? 这盐来自哪里? 我担心的是盐是静态的,使它非常不安全。