DWG转换pdf问题 求救啊求救

znl00700 2013-03-12 05:07:22
程序里面调用autocad的 Autodesk.AutoCAD.Interop.Common.dll和Autodesk.AutoCAD.Interop.dll
功能就是把dwg文件转换成pdf文件
vs2010里面调试都正常的,一在IIS浏览里面查看就报错。
代码如下
public string FoldPath = @"C:\Users\Administrator\Desktop\新建文件夹 (2)\";
public string targetPath = @"E:\znl\WebSite1\PDF\";
protected void Page_Load(object sender, EventArgs e)
{

}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
if (this.TreeView1.SelectedNode.ChildNodes.Count < 1)
{
string filePath = FoldPath + TreeView1.SelectedNode.Value.Trim();
int fangxiang = 90;

if (System.IO.File.Exists(filePath))
{
try
{
string filename = Path.GetFileNameWithoutExtension(filePath);
string foloder = Path.GetDirectoryName(filePath);
string filesource = foloder + "\\" + filename + "-Model.pdf";
string filetarget = targetPath + filename + ".pdf";
AcadDocumentClass AcdDoc = new AcadDocumentClass();
AcadDocument docu = AcdDoc.Application.Documents.Open(filePath, true, null); //以只读方式打开该文件
docu.ActiveLayout.ConfigName = "DWG To PDF.pc3"; //定义打印机
docu.ActiveLayout.UseStandardScale = true;
docu.ActiveLayout.StandardScale = AutoCAD.AcPlotScale.acScaleToFit;
docu.ActiveLayout.PlotType = AutoCAD.AcPlotType.acExtents;
docu.ActiveLayout.CenterPlot = true;
if (fangxiang == 0)
{
docu.ActiveLayout.PlotRotation = AutoCAD.AcPlotRotation.ac0degrees;
}
else
{
docu.ActiveLayout.PlotRotation = AutoCAD.AcPlotRotation.ac90degrees;
}
//docu.ActiveLayout.CanonicalMediaName = "A0"; //定义打印纸张
docu.ActiveLayout.PlotType = AutoCAD.AcPlotType.acExtents; //定义打印范围



docu.Plot.PlotToDevice(null);
docu.Close(null, null);
AcdDoc.Close(null, null);

if (System.IO.Directory.Exists(targetPath))
{

while (true)
{
if (System.IO.File.Exists(filesource) && !(IsFileInUse(filesource)))
{

System.Threading.Thread.Sleep(2000);
System.IO.File.Copy(filesource, filetarget, true);

while (true)
{
if (System.IO.File.Exists(filetarget))
{
System.IO.File.Delete(filesource);
ShowPdf1.FilePath = "PDF/"+filename + ".pdf";

break;
}
System.Threading.Thread.Sleep(1000);
}

break;
}
System.Threading.Thread.Sleep(1000);

}



}
else
{


}


}
catch(Exception ex)
{
Console.WriteLine("Convert Failed!");

}


}
else
{


}



}
else
{ }


}


具体的报错是:
检索 COM 类工厂中 CLSID 为 {6D7AE628-FF41-4CD3-91DD-34825BB1A251} 的组件失败,原因是出现以下错误: 80070005 拒绝访问。 (异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))。

IIS里面报错事件:

计算机-默认 权限设置并未从地址 LocalHost(使用 LRPC) 使用 CLSID
{D70E31AD-2614-49F2-B0FC-ACA781D81F3E}
和 APPID
不可用
向用户 IIS APPPOOL\DefaultAppPool SID (S-1-5-82-3006700770-424185619-1745488364-794895919-4004696415)授予对 COM 服务器应用程序的 本地 激活 权限。此安全权限可以使用组件服务管理工具进行修改。


在DCOM配置的时候 一直没找到IIS APPPOOL\DefaultAppPool 用户 。
求高手指点
...全文
590 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingszd 2013-07-03
  • 打赏
  • 举报
回复
引用 8 楼 znl00700 的回复:
谢谢大家了,最后写了个文件监视软件,监视上传文件夹里添加的文件为dwg,doc,docx,ppt等文件格式 的 自动转成pdf 。 没有在web里面添加调取cad转换的程序,因为不实际,而且cad只能开2个进程。 谢谢大家帮忙。结贴了
我也遇到了这个问题,可否共享一下你写的文件监视软件?
znl00700 2013-04-16
  • 打赏
  • 举报
回复
谢谢大家了,最后写了个文件监视软件,监视上传文件夹里添加的文件为dwg,doc,docx,ppt等文件格式 的 自动转成pdf 。 没有在web里面添加调取cad转换的程序,因为不实际,而且cad只能开2个进程。 谢谢大家帮忙。结贴了
znl00700 2013-03-13
  • 打赏
  • 举报
回复
引用 5 楼 findcaiyzh 的回复:
引用 4 楼 znl00700 的回复: 谢谢几位了,几位的方法试了一下,还是不行,事件查看器里面 IIS APPPOOL\DefaultAppPool 用户一直没有找到。 你可以在Application pool中设置用什么用户运行IIS process.
在哪里设置?你没看有看到这个选项
宝_爸 2013-03-13
  • 打赏
  • 举报
回复
引用 4 楼 znl00700 的回复:
谢谢几位了,几位的方法试了一下,还是不行,事件查看器里面 IIS APPPOOL\DefaultAppPool 用户一直没有找到。
你可以在Application pool中设置用什么用户运行IIS process.
znl00700 2013-03-13
  • 打赏
  • 举报
回复
谢谢几位了,几位的方法试了一下,还是不行,事件查看器里面 IIS APPPOOL\DefaultAppPool 用户一直没有找到。
宝_爸 2013-03-13
  • 打赏
  • 举报
回复
转帖一个Excel的配置,你自己修改成autoCAD的。你服务器上也要安装AutoCAD *************************************************************** 具体解决方法如下: 1:在服务器上安装office的Excel软件. 2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务" 3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置" 4:在"DCOM配置"中找到"Microsoft Excel 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应 用程序属性"对话框 5:点击"标识"标签,选择"交互式用户"(此设置可能对计算机安全存在威胁,如不设置可以解决问题就不设置)。 6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加 一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限. 7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限. 这样,我们便配置好了相应的Excel的DCOM权限. 注意:这是在WIN2003上配置的,在2000,xp上,NETWORK SERVICE用户改为ASP.net用户。 *************************************************************** 来自: http://www.cnblogs.com/yssoft/archive/2009/04/20/1439762.html
宝_爸 2013-03-13
  • 打赏
  • 举报
回复
运行Com的进程是IIS的进程,其用户是低级别的network service等。没有权限。 需要使用dcomcnfg来配置。
宝_爸 2013-03-13
  • 打赏
  • 举报
回复
IIS管理器中,Application Pool,选择你使用的Application pool。属性中的某个tab中有。
菜牛 2013-03-12
  • 打赏
  • 举报
回复
这个就是使用COM的限制了……简单办法,把你的网站配置为Windows验证,这样asp.net就运行在客户帐户上下文。

62,056

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧