精华内容
下载资源
问答
  • 在“任务管理器”中,页面错误是进程中当数据不在内存而必须从磁盘检索的次数。页面错误值从进程启动的时间开始累计。 页面错误增量 在“任务管理器”中,自上一次更新开始的页面错误次数的变化。 具体参见: 帮助...


    页面错误

    页面错误指当软件试图读取或写入标记为“不存在”的虚拟内存位置时发生的中断。页面错误记录了一个进程必须从硬盘上恢复的次数。

    在“任务管理器”中,页面错误是进程中当数据不在内存而必须从磁盘检索的次数。页面错误值从进程启动的时间开始累计。

    页面错误增量

    在“任务管理器”中,自上一次更新开始的页面错误次数的变化。

    具体参见: 帮助--任务管理器--使用进程--进程计数器列标题--页面错误

    页面错误不表示程序存在错误。不管内存多大,WINDOWS都离不开虚拟内存(利用磁盘),多少都会利用虚拟内存来存入一些数据,比如程序被最小化。

    页面错误 任务管理器 主要检测内存情况的。

    转载地址: http://blog.sina.com.cn/s/blog_51396f890100qjtb.html

    内存监控

        开发的一个项目中,遇到了内存泄露的情况,发现此时页面错误增量在300多,什么是页面错误增量?

        上网看了一下,这个就是当程序需要访问内存时,待访问的地址不再物理内存中,需要换页将虚拟内存页换到物理内存中。页面错误增量大,会导致运行效率差,赃页多。

        但是为什么会出现这个情况?是OS的问题还是APP的问题?还不清楚,需要再查一下。

        如果要查看程序使用情况,可以调用接口GetProcessMemoryInfo

    1. BOOL GetProcessMemoryInfo(  
    2.   HANDLE Process,  
    3.   PPROCESS_MEMORY_COUNTERS ppsmemCounters,  
    4.   DWORD cb  
    5. );  

        如果需要限制程序使用虚拟内存的大小,可使用SetProcessWorkingSetSize,注意:这样可能会降低运行效率.

    1. BOOL SetProcessWorkingSetSize(  
    2.   HANDLE hProcess,  
    3.   SIZE_T dwMinimumWorkingSetSize,  
    4.   SIZE_T dwMaximumWorkingSetSize  
    5. );  
    内存管理和缓存管理的细节,所以记录详细点,其他的东西(仅指基本组件)理解还可以。。以备忘的形式慢慢po上来~

    页面交换


    使用技巧

    对于虚拟内存如何设置的问题,微软已经给我们提供了官方的解决办法,对于一般情况下,我们推荐采用如下的设置方法:
    • 页面文件,文件的大小由你对系统的设置决定。具体设置方法如下:打开"我的电脑"的"属性"设置窗口,切换到"高级"选项卡,在"启动和故障恢复"窗口的"写入调试信息"栏,如果你采用的是试和错误报告了。所以折中的办法是在系统盘设置较小的页面文件,只要够用就行了。
    • 内存,其最小值设置为物理内存的1.5倍,最大值设置为物理内存的3倍,该分区专门用来存储页面文件,不要再存放其它任何文件。之所以单独划分一个分区用来设置虚拟内存,主要是基于两点考虑:其一,由于该分区上没有其它文件,这样分区不会产生磁盘碎片,这样能保证页面文件的数据读写不受磁盘碎片的干扰;其二,按照Windows对内存的管理技术,Windows会优先使用不经常访问的分区上的页面文件,这样也减少了读取系统盘里的页面文件的机会,减轻了系统盘的压力。
    • 页面文件,则其它硬盘分区不设置任何页面文件。因为过多的分区设置页面文件,这样会导致,硬盘磁头反复的在不同的分区来回读取。这样既耽误了系统速率,也会减少硬盘的寿命。当然,如果你有多个硬盘,则可以为每个硬盘都创建一个页面文件。当信息分布在多个页面文件上时,硬盘控制器可以同时在多个硬盘上执行读取和写入操作。这样系统性能将得到提高。

    换页错误

    换页错误,即Page fault。
    Page Fault 是在进程尝试执行代码指导,或者引用进程所映射物理内存中并不存在的数据页时,操作系统记录的事件。换句话说,进程需要的内存页实际上可能还处于物理内存中,但是由于它无法再分配到进程中,所以当进程将此页读取回到它的内存页时,就发生了Page Fault。

    在开发上,我认为主要是优化内存读取方式,如果存在大量的文件读取,虚拟内存也就多,换页次数就多,自然也很多,不作为主要的评测指标。













    现在内存都是分页的, 如果你要读或者写的页还没分在内存里, 就出现缺页错了。 这种事情在程序启动的时候可能非常频繁, 但是也不用你自己处理, 一般系统会自己搞定这事的, 搞不定就直接死机。。

    转载:http://en.wikipedia.org/wiki/Page_fault


    页缺失 (计算机科学)

    维基百科,自由的百科全书
    (重定向自Page fault

    页缺失英语Page fault,又名硬错误分页错误寻页缺失缺页中断页故障等)指的是当软件试图访问已映射在虚拟地址空间中,但是目前并未被加载在物理内存中的一个分页时,由中央处理器内存管理单元所发出的中断

    通常情况下,用于处理此中断的程序是操作系统的一部分。如果操作系统判断此次访问是有效的,那么操作系统会尝试将相关的分页从硬盘上的虚拟内存文件中调入内存。而如果访问是不被允许的,那么操作系统通常会结束相关的进程[1]

    虽然其名为“页缺失”错误,但实际上这并不一定是一种错误。而且这一机制对于利用虚拟内存来增加程序可用内存空间的操作系统(比如Microsoft Windows和各种类Unix系统)中都是常见且有必要的。

    微软在较新版Windows(Windows Vista及以上)的资源监视器中使用“硬错误”这一术语来指代“页缺失”。[2]

    目录

      [隐藏

    [编辑]分类

    [编辑]软性

    软性页缺失指页缺失发生时,相关的页已经被加载进内存,但是没有向MMU注册的情况。操作系统只需要在MMU中注册相关页对应的物理地址即可。[1]

    发生这种情况的可能性之一,是一块物理内存被两个或多个程序共享,操作系统已经为其中的一个装载并注册了相应的页,但是没有为另一个程序注册。

    可能性之二,是该页已被从CPU的工作集中移除,但是尚未被交换到磁盘上。比如OpenVMS这样的使用次级页缓存的系统,就有可能会在工作集过大的情况下,将某页从工作集中去除,但是不写入硬盘也不擦除(比如说这一页被读出硬盘后没被修改过),只是放入空闲页表。除非有其他程序需要,导致这一页被分配出去了,不然这一页的内容不会被修改。当原程序再次需要该页内的数据时,如果这一页确实没有被分配出去,那么系统只需要重新为该页在MMU内注册映射即可。[3]

    [编辑]硬性

    与软性页缺失相反,硬性页缺失是指相关的页在页缺失发生时未被加载进内存的情况。这时操作系统需要:[4]

    1. 寻找到一个空闲的页。或者把另外一个使用中的页写到磁盘上(如果其在最后一次写入后发生了变化的话),并注销在MMU内的记录
    2. 将数据读入被选定的页
    3. 向MMU注册该页

    硬性页缺失导致的性能损失是很大的。以一块7200rpm的主流机械硬盘为例,其平均寻道时间为8.5毫秒,读入内存需要0.05毫秒。相对的,DDR3内存的访问延迟通常在数十到100纳秒之间,性能差距可能会达到8万到22万倍。

    另外,有些操作系统会将程序的一部分延迟到需要使用的时候再加载入内存执行,以此来提升性能。这一特性也是通过捕获硬性页缺失达到的。[5]

    当硬性页缺失过于频繁的发生时,称发生系统颠簸

    [编辑]无效

    当程序访问的虚拟地址是不存在于虚拟地址空间内的时候,则发生无效页缺失。一般来说这是个软件问题,但是也不排除硬件可能,比如因为内存故障而损坏了一个正确的指针

    具体动作与所使用的操作系统有关,比如Windows会使用异常机制向程序报告,而类Unix系统则会使用信号机制。如果程序未处理相关问题,那么操作系统会执行默认处理方式,通常是转储内存、终止相关的程序,然后向用户报告。[4][6]

    [编辑]参考与延伸阅读

    1. 1.0 1.1 Red Hat Enterprise Linux 3: Introduction to System Administration, 4.4. Virtual Memory: The Details. RedHat [2013-02-11].
    2. ^ 参见资源监视器帮助
    3. ^ HP OpenVMS Systems Documentation, Chapter 7 Evaluating the Memory Resource. HP [2013-02-11].
    4. 4.0 4.1 So What Is A Page Fault?. OSR Online. 2003-05-07 [2013-02-11].
    5. ^ Red Hat Enterprise Linux 3: Introduction to System Administration, 4.5. Virtual Memory Performance Implications. RedHat [2013-02-11]. See note.
    6. ^ UnhandledExceptionFilter function. Microsoft MSDN [2013-02-11].
    • John L. Hennessy, David A. Patterson, Computer Architecture, A Quantitative Approach (ISBN 1-55860-724-2)
    • Tanenbaum, Andrew S. Operating Systems: Design and Implementation (Second Edition). New Jersey: Prentice-Hall 1997.
    • Intel Architecture Software Developer's Manual–Volume 3: System Programming

    非法访问和无效页错误处理

    非法访问和无效页错误可能会导致程序崩溃,分割错误,总线错误或核心转储的操作系统环境。这些问题通常是由于软件缺陷,但可能会损坏硬件内存错误,如由超频所引起的,指针和正确的软件故障。

    WindowsUNIX的操作系统(以及其他类UNIX系统)提供不同的页故障引起的错误报告机制。Windows使用结构化异常处理报告故障无效的存取访问冲突异常,UNIX(UNIX-like)的系统通常使用信号,如SIGSEGV,报告这些错误条件的方案。

    如果收到错误的程序不处理,操作系统执行的默认操作,一般涉及终止正在运行的过程中导致错误的条件,并通知用户,该计划已发生了故障。最新版本的Windows中经常报道这样的问题,就类似“这个程序必须关闭”(有经验的用户或程序员提供一个调试器仍然可以获取详细信息)。最新的Windows版本UNIX类UNIX操作系统报告这些条件的用户提供的错误信息,如“分割违反”或“巴士,也可以编写一个小型转储(类似的原则,以一个核心转储)描述的状态崩溃的过程。错误“,也可能产生核心转储。

    编辑 ]性能

    页故障,由于其本身的性质,一个程序或操作系统的性能降低和退化的情况可能会导致颠簸优化程序和操作系统数量减少的页面错误,提高程序性能,甚至整个系统。的两个主要侧重的优化工作,降低整体内存使用率和改善记忆的地方。为了减少页面系统中的故障,程序员必须使用适当的页面置换算法,适合当前需求和最大限度地提高了页面的点击。许多人都被提出,如实施启发式算法,以减少发病的页面错误。一般情况下,提供更多的物理内存,也减少了页面错误。

    主要页错误的传统(硬盘)计算机上可以有一个显着的性能影响。平均的硬盘具有的平均旋转等待时间为3ms,寻道时间为5ms,和转印时间为0.05毫秒/页。因此,总的寻呼时间是8ms的(8 000我们)附近。如果内存访问时间为0.2,那么页面故障,使操作约40,000倍的速度。

    MMU

    求助编辑百科名片

    MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。

    编辑本段历史

    许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还有用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由OS完成的,但是必须先由程序员把程序先进行分割,这是一个费时费力的工作,而且相当枯燥。人们必须找到更好的办法从根本上解决这个问题。不久人们找到了一个办法,这就是虚拟存储器(virtual memory).虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。比如对一个16MB的程序和一个内存只有4MB的机器,操作系统通过选择,可以决定各个时刻将哪4M的内容保留在内存中,并在需要时在内存和磁盘间交换程序片段,这样就可以把这个16M的程序运行在一个只具有4M内存机器上了。而这个16M的程序在运行前不必由程序员进行分割。

    编辑本段相关概念

    ——地址范围、虚拟地址映射为物理地址 以及 分页机制
    任何时候,计算机上都存在一个程序能够产生的地址集合,我们称之为地址范围。这个范围的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是0~0xFFFFFFFF (4G),而对于一个64位的CPU,它的地址范围为0~0xFFFFFFFFFFFFFFFF (16E).这个范围就是我们的程序能够产生的地址范围,我们把这个地址范围称为虚拟地址空间,该空间中的某一个地址我们称之为虚拟地址。与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地址,大多数时候我们的系统所具备的物理地址空间只是虚拟地址空间的一个子集。这里举一个最简单的例子直观地说明这两者,对于一台内存为256M的32bit x86主机来说,它的虚拟地址空间范围是0~0xFFFFFFFF(4G),而物理地址空间范围是0x000000000~0x0FFFFFFF(256M)。
    在没有使用虚拟存储器的机器上,虚拟地址被直接送到内存总线上,使具有相同地址的物理存储器被读写;而在使用了虚拟存储器的情况下,虚拟地址不是被直接送到内存地址总线上,而是送到存储器管理单元MMU,把虚拟地址映射为物理地址。
    大多数使用虚拟存储器的系统都使用一种称为分页(paging)机制。虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被进行划分,单位是页帧(frame).页和页帧的大小必须相同。在这个例子中我们有一台可以生成32位地址的机器,它的虚拟地址范围从0~0xFFFFFFFF(4G),而这台机器只有256M的物理地址,因此他可以运行4G的程序,但该程序不能一次性调入内存运行。这台机器必须有一个达到可以存放4G程序的外部存储器(例如磁盘或是FLASH),以保证程序片段在需要时可以被调用。在这个例子中,页的大小为4K,页帧大小与页相同——这点是必须保证的,因为内存和外围存储器之间的传输总是以页为单位的。对应4G的虚拟地址和256M的物理存储器,他们分别包含了1M个页和64K个页帧。

    编辑本段功能

    1、将虚拟地址映射为物理地址

    现代的多用户多进程操作系统,需要MMU,才能达到每个用户进程都拥有自己独立的地址空间的目标。使用MMU,操作系统划分出一段地址区域,在这块地址区域中,每个进程看到的内容都不一定一样。例如MICROSOFT WINDOWS操作系统将地址范围4M-2G划分为用户地址空间,进程A在地址0X400000(4M)映射了可执行文件,进程B同样在地址0X400000(4M)映射了可执行文件,如果A进程读地址0X400000,读到的是A的可执行文件映射到RAM的内容,而进程B读取地址0X400000时,则读到的是B的可执行文件映射到RAM的内容。
    这就是MMU在当中进行地址转换所起的作用。

    2、提供硬件机制的内存访问授权

    多年以来,微处理器一直带有片上存储器管理单元(MMU),MMU能使单个软件线程工作于硬件保护地址空间。但是在许多商用实时操作系统中,即使系统中含有这些硬件也没采用MMU。
    应用程序的所有线程共享同一存储器空间时,任何一个线程将有意或无意地破坏其它线程的代码、数据或堆栈。异常线程甚至可能破坏内核代码或内部数据结构。例如线程中的指针错误就能轻易使整个系统崩溃,或至少导致系统工作异常。
    就安全性和可靠性而言,基于进程的实时操作系统(RTOS)的性能更为优越。为生成具有单独地址空间的进程,RTOS只需要生成一些基于RAM的数据结构并使MMU加强对这些数据结构的保护。基本思路是在每个关联转换中“接入”一组新的逻辑地址。MMU利用当前映射,将在指令调用或数据读写过程中使用的逻辑地址映射为存储器物理地址。MMU还标记对非法逻辑地址进行的访问,这些非法逻辑地址并没有映射到任何物理地址
    这些进程虽然增加了利用查询表访问存储器所固有的系统开销,但其实现的效益很高。在进程边界处,疏忽或错误操作将不会出现,用户接口线程中的缺陷并不会导致其它更关键线程的代码或数据遭到破坏。目前在可靠性和安全性要求很高的复杂嵌入式系统中,仍然存在采无存储器保护的操作系统的情况,这实在有些不可思议。
    采用MMU还有利于选择性地将页面映射或解映射到逻辑地址空间。物理存储器页面映射至逻辑空间,以保持当前进程的代码,其余页面则用于数据映射。类似地,物理存储器页面通过映射可保持进程的线程堆栈。RTOS可以在每个线程堆栈解映射之后,很容易地保留逻辑地址所对应的页面内容。这样,如果任何线程分配的堆栈发生溢出,将产生硬件存储器保护故障,内核将挂起该线程,而不使其破坏位于该地址空间中的其它重要存储器区,如另一线程堆栈。这不仅在线程之间,还在同一地址空间之间增加了存储器保护。
    存储器保护(包括这类堆栈溢出检测)在应用程序开发中通常非常有效。采用了存储器保护,程序错误将产生异常并能被立即检测,它由源代码进行跟踪。如果没有存储器保护,程序错误将导致一些细微的难以跟踪的故障。实际上,由于在扁平存储器模型中,RAM通常位于物理地址的零页面,因此甚至NULL指针引用的解除都无法检测到

    展开全文
  • 检索页面 这是我以前的雇主给我的一个编码作业的C编程语言实现。 编码分配 编写实用程序以检索指定的一个或多个网页。 该页面可以显示在终端上,也可以保存到文件中。 该实用程序应该能够支持HTTP 1.1保持活动状态,...
  • 检索COM类工厂中CLSID为{} 错误:80040154 原因:是因为你某个组件在客户端可能没有注册,例如:AAA.dll组件 解决方法:在你开发时会有一引用到一些组件,这里要根据你出错的那个页面所引用的组件,将那些组件拷贝...

    今天弄了一下这个问题,再加上很久没上园子了,作点记录。

    检索COM类工厂中CLSID为{} 错误:80040154  

    原因:是因为你某个组件在客户端可能没有注册,例如:AAA.dll组件

    解决方法:在你开发时会有一引用到一些组件,这里要根据你出错的那个页面所引用的组件,将那些组件拷贝到客户端,

    运行cmd,键入 regsvr32.exe C:/abc/efg/AAA.dll

    应该就可以了!

    转载于:https://www.cnblogs.com/groler/archive/2011/10/21/2220346.html

    展开全文
  • 网站 api 中有一个错误,这使我们不得不恢复到 jsonp 进行几次查询。 先决条件 您将需要在您的计算机上正确安装以下东西。 (带有 NPM) 安装 git clone 这个仓库 切换到新目录 npm install bower install 运行/...
  • 下面实现的是由页面上传一个word文档,然后把该文档保存到工程目录的文件夹UploadWord下. 在页面上可以实现搜索word文档里里面是否含有某些文字内容,同时可以把Word文件转化为HTMl页面.1.上传word: 页面上代码: ...

    下面实现的是由页面上传一个word文档,然后把该文档保存到工程目录的文件夹UploadWord下.

     在页面上可以实现搜索word文档里里面是否含有某些文字内容,同时可以把Word文件转化为HTMl页面.

    1.上传word:

       页面上代码:<asp:FileUpload ID="FU_wd" runat="server" />

       点击保存后,保存方法如下:

    //文档录入
        protected void Button3_Click(object sender, EventArgs e)
        {
       
    
            string newName = "";
            string flex = "";
            string wjlj = "";
            try
            {
    
                if (Request.Files.Count > 0)
                {
                    Random ro = new Random();
                    if (FU_wd.FileName != "")
                    {
                        string filename = Path.GetFileName(FU_wd.FileName);
                        flex = Path.GetExtension(FU_wd.FileName);
                        string stro = ro.Next(100, 1000000).ToString();
                        newName = DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + stro;
    
                        //保有存文件到目录下
                        FU_wd.PostedFile.SaveAs(Server.MapPath("UpLoadWord/") + newName + flex);
                        wjlj = "UpLoadWord/" + newName + flex;
                    }
                }
                string sql = string.Format("insert into zl(xh, wdmc, wdlj)values ('{0}','{1}','{2}')", Guid.NewGuid().ToString(), wdmc, wjlj);
                //执行SQL语句,省略.....            
                Response.Write("<script>alert('保存成功');location.replace(location.href)</script>");
            }
            catch (Exception)
            {
                File.Delete(Server.MapPath("UpLoadWord/") + newName + flex);
                Response.Write("<script>alert('保存错误');location.replace(location.href)</script>");
            }
        }

    2.搜索word文档里面是否含有需要查询的文字,方法如下,如果含有则返回"true"字条串:

      

    /// <summary>
        ///查询word文档中是否含有此文字 [引用例如:CkWordCont(Server.MapPath("../UpLoadWord/1.doc"), "火灾")]
        /// </summary>
        /// <param name="filePath">路径</param>
        /// <param name="strKey">文字</param>
        /// <returns></returns>
        private string CkWordCont(string strKey, string filePath)
        {
            string result = "";
            object MissingValue = Type.Missing;
    
           
                Microsoft.Office.Interop.Word.Application wp = new Microsoft.Office.Interop.Word.Application();
                //遍历每个word文档
                object filename = Server.MapPath(filePath);
    
                Microsoft.Office.Interop.Word.Document wd = wp.Documents.Open(ref filename, ref MissingValue,
                       ref MissingValue, ref MissingValue,
                       ref MissingValue, ref MissingValue,
                       ref MissingValue, ref MissingValue,
                       ref MissingValue, ref MissingValue,
                       ref MissingValue, ref MissingValue,
                       ref MissingValue, ref MissingValue,
                       ref MissingValue, ref MissingValue);
    
                int i = 0, iCount = 0;
                Microsoft.Office.Interop.Word.Find wfnd;
                if (wd.Paragraphs != null && wd.Paragraphs.Count > 0)
                {
                    iCount = wd.Paragraphs.Count;
                    
                        wfnd = wd.Paragraphs[i].Range.Find;
                        wfnd.ClearFormatting();
                        wfnd.Text = strKey;
                        if (wfnd.Execute(ref MissingValue, ref MissingValue,
                       ref MissingValue, ref MissingValue,
                       ref MissingValue, ref MissingValue,
                       ref MissingValue, ref MissingValue,
                       ref MissingValue, ref MissingValue,
                       ref MissingValue, ref MissingValue,
                       ref MissingValue, ref MissingValue,
                       ref MissingValue))
                        {
                            result ="true";
                            break;
                        }
                    //关闭word文档.                
                    wd.Close(ref MissingValue, ref MissingValue, ref MissingValue);
                    wp.Quit(ref MissingValue, ref MissingValue, ref MissingValue);
                }
                    return result;
        }

      3.把word文档转化成HTMl文件,方法如下:

      

    /// <summary>        
        /// word转成html[把word文档换成同名的html文件,并返回其路径]       
        /// </summary>       
        /// <param name="wordFileName"></param>
        private string WordToHtml(object wordFileName)
        {
            //在此处放置用户代码以初始化页面          
            ApplicationClass word = new ApplicationClass();
            Type wordType = word.GetType();
            Documents docs = word.Documents;
            //打开文件          
            Type docsType = docs.GetType();
            Document doc = (Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { wordFileName, true, true });
            //转换格式,另存为           
            Type docType = doc.GetType();
            string wordSaveFileName = wordFileName.ToString();
            string strSaveFileName = wordSaveFileName.Substring(0, wordSaveFileName.Length - 3) + "html";
            object saveFileName = (object)strSaveFileName;
    
            docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, WdSaveFormat.wdFormatFilteredHTML });
            docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null);
            //退出 Word            
            wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
            return saveFileName.ToString();
    
        }
      以上方法为例:在通过WordToHtml()方法之后,获得html文件的路径HtmlPath:

      举例:

         

            string HtmlPath = WordToHtml(Server.MapPath("UpLoadWord/2416125839513.doc"));
            string rePath = HtmlPath.Substring(HtmlPath.IndexOf("UpLoadWord\\") + 11, HtmlPath.Length - HtmlPath.IndexOf("UpLoadWord\\") - 11);
            Response.Redirect("UpLoadWord/" + rePath);

     通过路径获得文件,然后中转到页面.

    -----------------------------------------------------------归总--------------------------------------------------------

      这里做一下补充:

       1.word的相关操作需要引用DDL文件:Microsoft.Office.Interop.Word.dll

        2.word文字检索的方法可以写到一个单独的类里面:

          如可定义一个类:WordHelper.cs:

         操作方法如下:

        

     /// <summary>
        ///查询word文档中是否含有此文字
        /// </summary>
        /// <param name="filename">路径</param>
        /// <param name="strKey">文字</param>
        /// <returns></returns>
        public static bool CkWordCont(string strKey, string filename, HttpServerUtility server)
        {
            bool flag = false;
            object MissingValue = Type.Missing;
    
            Microsoft.Office.Interop.Word.Application wp = new Microsoft.Office.Interop.Word.Application();
            //遍历word文档
            //object filename = Server.MapPath(nrdt.Rows[j]["wdlj"].ToString());
            object filepath = server.MapPath(filename);
            Microsoft.Office.Interop.Word.Document wd = wp.Documents.Open(ref filepath, ref MissingValue,
                   ref MissingValue, ref MissingValue,
                   ref MissingValue, ref MissingValue,
                   ref MissingValue, ref MissingValue,
                   ref MissingValue, ref MissingValue,
                   ref MissingValue, ref MissingValue,
                   ref MissingValue, ref MissingValue,
                   ref MissingValue, ref MissingValue);
    
            int i = 0, iCount = 0;
            Microsoft.Office.Interop.Word.Find wfnd;
            if (wd.Paragraphs != null && wd.Paragraphs.Count > 0)
            {
                iCount = wd.Paragraphs.Count;
                for (i = 1; i <= iCount; i++)
                {
                    wfnd = wd.Paragraphs[i].Range.Find;
                    wfnd.ClearFormatting();
                    wfnd.Text = strKey;
                    if (wfnd.Execute(ref MissingValue, ref MissingValue,
                   ref MissingValue, ref MissingValue,
                   ref MissingValue, ref MissingValue,
                   ref MissingValue, ref MissingValue,
                   ref MissingValue, ref MissingValue,
                   ref MissingValue, ref MissingValue,
                   ref MissingValue, ref MissingValue,
                   ref MissingValue))
                    {
                        flag = true;
                        break;
                    }
                }
                //关闭文档
                wd.Close(ref MissingValue, ref MissingValue, ref MissingValue);
                wp.Quit(ref MissingValue, ref MissingValue, ref MissingValue);
            }
            return flag;
        }
    其中 因为HttpServerUtility类的Server对象不能写在静态方法里,所有把它作为静态方法的参数引用.
    在页面中调用如下:WordHelper.CkWordCont("关键字","upload/a.doc", Server)

    3.程序在自己本地机器上调试的时候,要把本地存放文件的文件夹设成共享.

     如果放到服务器上的话,可能出现以下错误:

     在检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败时错误: 80070005

    解决方案如下:

            1.控制面板-》管理工具-》组件服务-》计算机-》我的电脑-》DCom配置-》找到Microsoft word文档之后,单击属性打开此应用程序的属性对话框。

      2. 单击标识选项卡,然后选择交互式用户。

      3.单击“安全”选项卡,分别在“启动和激活权限”和“访问权限”组中选中“自定义”,然后

        自定义->编辑->添加ASP.NET账户和IUSER_计算机名(或USER用户)[注:两个用户均需要添加上]

       ( 这些帐户仅在计算机上安装有 IIS 的情况下才存在。)

           4. 确保允许每个用户访问,然后单击确定。

      5. 单击确定关闭 DCOMCNFG。

      

    展开全文
  • 错误讯息:检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问。 (异常来 解决办法,如下: 一、 建立模拟帐号 1:在用户里创建 fdf用户...

    错误讯息:检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问。 (异常来

    解决办法,如下:

    一、 建立模拟帐号

    1:在用户里创建 fdf用户,并授予管理员组权限;

    2:在web.config 中 建立模拟帐号

    <identity impersonate="true"userName="fdf" password="PMis09" />

    在web.config页面增加:

    <system.web> 下面增加

    <identity impersonate="true"userName="fdf" password="PMis09" />


    3:DCOM 组件,权限里增加fdf权限;


    二、增加ASPNET等用户权限

    1.运行dcomcnfg。
    2.点 组件服务-》服务-》电脑-》我的电脑-》DCOM 配置。
    3.找到“Windows Management and Instrumentation”,右击属性--安全--编辑--将 Network Service系统用户,ASPNET、IUSR_MACHINENAME和IWAM_MACHINENAME、用户权限添加进去。
    4.重启电脑。

    展开全文
  • pageContext对象、JSP标签、如何查找JSP页面中的错误 pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象,可以用来保存...
  • 做了一个网站,在自己电脑上没有错误,但是发布到服务器上后,浏览其中一个页面的时候出现了如题所示的错误。在网上也找了很多,说是什么给word添加权限,结果也不行。后来看了下代码,发现里面引用了一个Dll文件,...
  • 报错内容一大串,核心是“检索COM类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005”。应该是WEB应用帐号权限不足导致的。百度上同样问题的解决方案超级多,但...
  • 精确检索当前时间。 工作正在进行中! 支持 如有任何疑问,请随时。 不论个人背景,欢迎每个人。 我们执行 ,以营造积极和包容的环境。 贡献 这个项目是用 :red_heart: 。 回报的最简单方法是在网上加注星标和分享...
  • 我没有时间积极维护代码以跟上DataTables更新或代码中的错误。 如果遇到问题,请随时归因于您自己的更改。 :thumbs_up: DataTables插件-保留条件 每次更改条件(例如页面,长度,搜索或列顺序)时,将DataTable条件...
  • solr检索乱码的问题

    千次阅读 2014-05-04 15:59:04
    可能的错误地方:  1.jsp页面编码  2.表单编码  3.servlet可接受编码  4.tomcat中server.xml文件中的指定编码    所有的编码要统一,一般使用“UTF-8”比较好 我最近一次出错的是第四种情况,问题...
  • 引用机器人 GitHub存储库详细信息 该机器人有1-2个主要分支: 主代码在上实现,供公众使用。 必要时,开发分支主要用于重组和测试,并在上实现。 概述 这是有关此机器人是什么以及部分零件如何连接的一些... 错误和要
  • 如果进行编辑,页面将重新加载。 您还将在控制台中看到任何棉绒错误。 yarn test 在交互式监视模式下启动测试运行程序。 有关更多信息,请参见关于的部分。 yarn build 构建生产到应用程序build文件夹。 它在生产...
  •  不可访问授权码错误  一种全文检索的思路和实现蓝冰飞寒 摘要:在最初进行设计的时候我是按照搜索引擎来设计的,在做爬行页面的过程中发现了很多问题,都是很难克服的瓶颈。因此放弃了这种方案,采用了单纯搜索...
  • 如果进行编辑,页面将重新加载。 您还将在控制台中看到任何棉绒错误。 npm test 在交互式监视模式下启动测试运行程序。 有关更多信息,请参见关于的部分。 npm run build 构建生产到应用程序build文件夹。 它在...
  • 404页面

    千次阅读 2012-10-09 22:43:54
    欢迎拍砖!  一、 1、Google 404 ...Google网站管理员工具,能直接帮你检索出你网站上的404错误。 http://www.google.com/webmasters/     网站发布前要进行周全的测试,404错误错误要设
  • 奇怪错误排查

    2015-11-20 15:54:42
    在做搜索界面的时候,本来想着已经逐步...3、利用jqueryUI 的 autocomplete 实现了搜索输入框内容可以对用户输入的检索词进行提示功能; 但是,经过测试,出现了非常严重的问题,在页面上看,就是第一次点击“搜索”按
  • 小提琴中提供了如何在页面上使用 cdevErrorBox 指令的示例。 安装 $ bower install ng-error-handler 文档 cdev默认错误代码 cdevErrorHandling 模块中的常量 定义要使用的回退错误代码。 cdev默认错误消息 ...
  • 如此简单干净的页面,要如何下手查找我需要的错误信息呢? 智能搜索让信息查找更简单,目前已覆盖20+重要云产品,提供4,569条错误码信息的解决方案检索。 输入错误码等相关信息,直达相关错误信息列表,选择产品...
  • 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。 yarn test 在交互式监视模式下启动测试运行器。 有关更多信息,请参见关于的部分。 yarn build 构建生产到应用程序build文件夹。 它在...
  • J2EE应用程序客户端运行时错误 38 Web客户端运行时错误 39 用检验工具检查问题 39 比较你的EAR文件和样本EAR文件 39 其它异常 39 第二部分 EJB技术 40 第3章 企业Bean 40 1,企业Bean概述 41 企业Bean的优点 41 何时...
  •  检索 COM 类工厂中 CLSID 为 {00021A20-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80080005 尝试了很久总算发现了问题所在.是com组件的权限问题. 1:在服务器上安装office的Word软件. 2:...
  • 问题:检索kylin的时候,页面没有返回错误信息。 解决:检索对应cube没有数据,添加cube数据,下面错误消失。 错误log: 2019-08-23 13:33:40,661 INFO [Query ce241435-d133-4852-b6db-c21055dad77c-50...
  •  检索 COM 类工厂中 CLSID 为 {00021A20-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80080005  尝试了很久总算发现了问题所在.是com组件的权限问题.  1:在服务器上安装office的Wor...
  • 本人一个用DEDECMS 5.7建的网站,建好后一直没有使用搜索功能,今日在网站进行搜索时,发现无论搜索什么都跳出404错误页面,真是奇怪。 经仔细检查,发现时因为网站安装时默认开启了文章全文检索功能,而服务器上并...
  • 从Albert Liu的Schedge API检索的数据的课程目录前端。 使用React制作。 该项目是通过引导的。 可用脚本 在项目目录中,可以运行: yarn start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行...
  • **问题现象:**在苹果App上,输入地址关键字会自动补全地址下拉选择层,但是当点击下拉选择层上的地址时,无法选择到选择层上的地址,而是点击到了选择层下的地图上(此处调用的百度地图关键字检索地址api)。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 435
精华内容 174
关键字:

检索页面错误