System.Runtime.InteropServices.COMException:存在文件共享冲突。无法按要求访问该文件

时间:2012-10-10 12:59:13

标签: c# asp.net com-interop office-interop

当我尝试打开Visio文档并将其另存为pdf时出现此错误:

protected void ViewVisio(string url)
{
    string pdfFile = Server.MapPath("/Files/test.pdf");

    Microsoft.Office.Interop.Visio.Application visApp =
        new Microsoft.Office.Interop.Visio.Application();
    Microsoft.Office.Interop.Visio.Document visDoc = 
        visApp.Documents.Open(url.ToString());            // error occurs here

    visDoc.ExportAsFixedFormat(
        Microsoft.Office.Interop.Visio.VisFixedFormatTypes.visFixedFormatPDF,
        pdfFile,
        Microsoft.Office.Interop.Visio.VisDocExIntent.visDocExIntentScreen,
        Microsoft.Office.Interop.Visio.VisPrintOutRange.visPrintAll, 1, -1,
        false, true, true, true, false, System.Reflection.Missing.Value);

    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.ContentType = "application/pdf";
    Response.TransmitFile(pdfFile);
    Response.Flush();
    Response.End();
}

这是我得到的错误:

  

System.Runtime.InteropServices.COMException:存在文件共享冲突。无法按要求访问该文件。

堆栈追踪:

  

堆栈追踪:

     

[COMException(0x86db097e):

     

存在文件共享冲突。无法按要求访问该文件。]

     

Microsoft.Office.Interop.Visio.DocumentsClass.Open(String FileName)+0

     

...

任何人都知道这是什么问题?我找不到任何细节。

1 个答案:

答案 0 :(得分:1)

它只是意味着另一个应用程序打开了您的文件,因此锁定了它。在运行程序时,是否在Visio中打开了文档?

您可以通过运行用于文件所有权的SysInternals Handle工具来验证哪个进程对文件有保留:http://technet.microsoft.com/en-us/sysinternals/bb896655