记录开发中遇到的和别人问的较多的问题....
- IE10中LinkButton不可用
- 如何配置IIS才能通过链接下载文件
- 如何配置IIS通过链接是下载而不是直接打开txt/图片类型文件
- C# 给虚拟目录批量添加MIME示例
- C# 获取虚拟目录的物理路径示例
- The name 'ScriptManager' does not exist in the current context
- System.InvalidOperationException: 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序 Office 2010
- Unable to find manifest signing certificate in the certificate store"
- 配置Session为StateServer方式
- C# 用WMI获取网卡MAC地址示例代码
- 使用Net User命名创建帐户,如何让密码永不过期的问题
- C# 得到文件头信息示例代码
- 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序
- C# 利用SharpZipLib对字符串进行压缩
- Assembly.Load (Byte[])方法 调用内存占用一直增大的问题
- IIS7/7.5配置上传大文件
- 项目发布在IIS中图片或CSS样式无法正常显示
- Web.config文件中配置修改查询超时时间
IE10中LinkButton不可用
这应该是2013年初遇到的一个BUG,当使用Asp.Net开发Web Application时,页面使用LinkButton按钮;运行页面用IE10打开,点击LinkButton按钮出现如下图错误
没有直接弹出如下图错误,可以运行IE10开发人员工具(F12),在控制台中查看,也会输出 “__doPostBack”未定义 错误信息
解决方法及参考:
下载并在服务器上安装相应补丁程序即可,下载地址:
.NET Framework 2.0 : http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2600100&kbln=zh-cn
.NET Framework 4.0 : http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2600088&kbln=zh-cn
参考来自:
如何配置IIS才能通过链接下载文件
如果不进行任何的配置,通过url直接下载一个doc类型文件(例如:http://www.xxx.com/1.doc),页面会返回如下错误:
HTTP 错误 404.3 - Not Found
由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
解决方法:
以IIS7.5为例
1.在IIS中找到相应的网站
2.在“功能视图”中找到“MIME”类型,双击进入
3.添加,在“文件扩展名”内填入相应的扩展名,比如:.doc
4.在“MIME类型(M)”内填入相应的MIME类型,比如doc文件的MIME:application/msword
5.提交
操作完成后再次点击url,浏览器会填出下载窗口!
不清楚相应类型文件对应的MIME类型可以在此网址查找:
测试发现应该不用每种文件类型指定确切的MIME类型,application/octet-stream 适用于多数文件类型...
如何配置IIS通过链接是下载而不是直接打开txt/图片类型文件
当正确配置MIME类型后,下载文件大部分都可以成功,但是如txt或者是一些图片格式的文件,浏览器不会填出下载窗口,而是会在当前页打开并显示其内容,如果需要直接下载这些类型的文件,还需要其它的IIS配置:
测试只适用于IE!
解决方法:
以IIS7.5为例
1.在IIS中找到相应的网站
2.在“功能视图”中找到“HTTP 响应头”类型,双击进入
3.添加,“名称”内填入:Content-Disposition
4.在“值”内填入:attachment
5.提交
操作完成后,打开IE再次点击url,浏览器会填出下载窗口!
C# 给虚拟目录批量添加MIME示例
using System.DirectoryServices; //添加导出COM组件:Active DS IIS Namespace Provider static void Main(string[] args) { Console.WriteLine("正在添加已有的MIME类型..."); DirectoryEntry virDir_IKeyMgmt = new DirectoryEntry("IIS://localhost/W3SVC/1/ROOT/虚拟目录名"); try { PropertyValueCollection mimeCollection = (PropertyValueCollection)virDir_IKeyMgmt.Properties["MimeMap"]; //获取MIME类型 string[] extArr = new string[] {".tar", ".zip", ".gz", ".gds", ".v", ".sof", ".bit", ".stp", ".edf", ".sdc", ".ucf", ".fsdb", ".vcd", ".sess", ".rc", ".result", ".jpg", ".png", ".pdf", ".doc", ".txt", ".log", ".xrc", ".lvs", ".xls", ".elf", ".tr0"}; IISOle.MimeMapClass mimeType = null; foreach (string ext in extArr) { mimeType = new IISOle.MimeMapClass(); mimeType.Extension = ext; mimeType.MimeType = "application/octet-stream"; mimeCollection.Add(mimeType); } virDir_IKeyMgmt.CommitChanges();//更改目录 Console.WriteLine("添加成功!"); } catch (Exception ex) { Console.WriteLine("添加失败!"); Console.WriteLine("错误信息:" + ex.ToString()); } finally { Console.ReadLine(); } }
C# 获取虚拟目录的物理路径示例
/// <summary> /// 获取虚拟目录的物理路径 /// </summary> /// <param name="identifier">虚拟目录所属网站的标识符</param> /// <param name="name">虚拟目录名称</param> /// <returns></returns> private string GetWebVirtualDirectoryPath(string identifier, string name) { DirectoryEntry de = new DirectoryEntry("IIS://LOCALHOST/W3SVC/" + identifier + "/ROOT/" + name); string path = (string)de.Properties["Path"].Value; return path; } /// <summary>???????? /// 获取网站的标识符 /// </summary> /// <param name="portNumber">端口号</param> ///<returns></returns> private string GetWebSiteIdentifier(string portNumber) { DirectoryEntry root = new DirectoryEntry("IIS://LOCALHOST/W3SVC"); foreach (DirectoryEntry e in root.Children) { if (e.SchemaClassName == "IIsWebServer") { foreach (object property in e.Properties["ServerBindings"]) { if (property.Equals(":" + portNumber + ":")) { return e.Name; } } } } //?默认为“默认网站”的标识符 return "1"; }