记录开发中遇到的和别人问的较多的问题....

 

 

IE10中LinkButton不可用

    这应该是2013年初遇到的一个BUG,当使用Asp.Net开发Web Application时,页面使用LinkButton按钮;运行页面用IE10打开,点击LinkButton按钮出现如下图错误

  没有直接弹出如下图错误,可以运行IE10开发人员工具(F12),在控制台中查看,也会输出 “__doPostBack”未定义 错误信息

【2013年】开发常见问题回顾(一)

 

解决方法及参考:

下载并在服务器上安装相应补丁程序即可,下载地址:

.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

参考来自:

http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

 

如何配置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类型可以在此网址查找:

 http://www.filesuffix.com/

测试发现应该不用每种文件类型指定确切的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";
        }
展开查看示例代码

相关文章:

  • 2021-09-18
  • 2021-12-30
  • 2021-08-30
  • 2021-05-24
  • 2022-01-13
  • 2022-01-04
  • 2021-04-10
  • 2021-12-13
猜你喜欢
  • 2021-07-12
  • 2022-01-14
  • 2022-01-13
  • 2021-11-30
  • 2021-11-29
  • 2021-08-22
  • 2021-10-29
相关资源
相似解决方案