假设我在ASP.NET中有一个包含按钮的用户控件:
public class MyUserControl : UserControl {
private Button btnSave = new Button();
}
Run Code Online (Sandbox Code Playgroud)
我可以通过创建指向按钮的属性将按钮的任何属性暴露给外部:
public string SaveButtonText {
get { return btnSave.Text; }
set { btnSave.Text = value; }
}
Run Code Online (Sandbox Code Playgroud)
那么我可以这样设置按钮的文本:
MyControl.SaveButtonText = "hello world";
Run Code Online (Sandbox Code Playgroud)
是否有类似的构造我可以用来将按钮的事件暴露给外部?就像是:
public event SaveButtonClick { return btnSave.OnClick; }
...
MyControl.SaveButtonClick += new EventHandler(...);
Run Code Online (Sandbox Code Playgroud) 我正在将一系列网站从现有的IIS5服务器迁移到全新的IIS7 Web服务器.其中一个页面从数据库中的blob中提取数据文件并将其提供给最终用户:
Response.ContentType = rs("contentType")
Response.AddHeader "Content-Disposition", "attachment;filename=" & Trim(rs("docName"))&rs("suffix")' let the browser know the file name
Response.AddHeader "Content-Length", cstr(rs("docsize"))' let the browser know the file size
Run Code Online (Sandbox Code Playgroud)
在新的IIS7安装中进行测试,我在Internet Explorer和Firefox中都出现"连接重置"错误.如果删除Content-Length标头,则文档会正确提供(但用户将无法获得有用的进度条).
关于如何纠正这个问题的任何想法; 无论是服务器配置选项还是通过代码?
编辑1:多做了一些试验和错误.如果"启用缓冲"和"启用分块编码"都为假,则请求将成功.如果其中任何一个启用,则会发生错误.
编辑2:更多试验和错误测试; 事实证明,文本文件可以正常使用脚本; 只有二进制文件(图像,pdf等)才会失败.否则仍然完全无能为力.
我有一个正在托管的 Web 应用程序,我的一个客户报告说,该网站中包含的某些 Telerik javascript 库(但不是全部)无法正常工作。
到目前为止,我能够诊断的是,在该过程的某个时刻,包含 Telerik javascript 代码的 WebResource.axd 资源被阻止。要求客户端使用相同的查询字符串直接导航到 AXD 文件本身会在 Internet Explorer 中产生“与服务器的连接已重置”错误消息。
客户端尝试从其所在位置的多台计算机、防火墙和网络之外的计算机以及在家中运行的计算机下载该文件,但每次都会出现相同的错误。他们尝试过使用 Internet Explorer 和 Firefox。
但是,我能够在我们的托管网络内部、外部以及我的家庭连接中成功下载相同的文件。
根据 IIS 日志,所有记录的下载资源的尝试都会产生 200 HTTP OK 结果。
其他已经尝试过的事情:
我现在对此时可能出现的问题感到茫然。我们的托管服务器多年来一直托管着数十个不同的 ASP.NET 应用程序(包括相关应用程序的多个实例),这是我看到的第一个与此相关的投诉。
我 99% 确信问题出在客户端,防火墙或路由器内容过滤配置不正确,但这并不能解释为什么客户端在防火墙外和家里都会遇到相同的问题。
关于可能出什么问题或者甚至要问什么进一步的问题有什么想法吗?有谁见过这样的东西吗?
我在IIS6服务器上运行ASP.NET.现在,服务器设置为压缩动态生成的内容,主要是为了减少正在检索的ASPX文件的页面大小.
一旦ASPX文件具有以下代码,用于从数据库中获取文件并将其发送给用户:
Response.Clear();
Response.Buffer = true;
Response.ContentType = Document.MimeType;
Response.AddHeader("content-disposition", "attachment;filename=\"" + Document.Filename + Document.Extension + "\"");
Response.AddHeader("content-length", Document.FileSizeBytes.ToString());
byte[] docBinary = Document.GetBinary();
Response.BinaryWrite(docBinary);
Run Code Online (Sandbox Code Playgroud)
下载本身完美无缺.但是,下载文件的人没有获得进度条,这非常令人讨厌.
从我一直在做的研究来看,似乎当IIS在压缩动态内容时将传输编码设置为分块时,这会删除内容长度标头,因为它在执行此操作时违反了HTTP1.1标准.
如果不在服务器级别关闭动态压缩,最好的解决方法是什么?有没有办法通过ASP.NET以编程方式关闭此响应的压缩?有更好的办法吗?
asp.net ×2
iis ×2
.net ×1
asp-classic ×1
axd ×1
c# ×1
compression ×1
events ×1
iis-7 ×1
telerik ×1