1

我在使用网络服务作为 IIS 标识并使用 Micorsoft Powerpoint Interop DLL 的 ASP Web 应用程序中遇到问题。

我有一台 Windows 7 计算机作为服务器和开发机器。

我需要使用此用户来访问应用程序中的 LAN 资源。

问题是当我们使用 powerpoint interop dll 时(我们已经读到 Microsoft 不推荐将它们用于 Web 应用程序,但此时我们必须重用我们在其他本地应用程序中的代码)创建 powerpoint 文件的方法似乎空闲在调用 Slide Shapes.AddPicture 方法时调试应用程序。

如果我删除此语句,则互操作运行良好并创建文件,但我不知道为什么不起作用。

我按照本论坛中的描述配置了 DCOM 服务组件:

http://social.technet.microsoft.com/Forums/en-US/w7itproappcompat/thread/dde69147-a01a-4eb1-8ea9-31adbf874bed/

这样做:

  1. 在 DCOMCNFG 中,右键单击我的电脑并选择属性。
  2. 选择 COM 证券选项卡
  3. 在访问权限中,单击“编辑默认值”并向其添加网络服务并为其授予“允许本地访问”权限。对 \Users 执行相同的操作。
  4. 在启动和激活权限中,单击“编辑默认值”并向其添加网络服务,并为其授予“本地启动”和“本地激活”权限。对 \Users 执行相同的操作

按确定,就是这样。

另外,我遵循以下说明:

通过 Server 2008 上的 Windows 服务实现 Office 自动化

'Ogawa Hack' 总结:为系统配置文件创建一个桌面文件夹,如:C:\Windows\System32\config\systemprofile\Desktop,如果在 64 位机器上运行,则创建另一个,如:C: \Windows\SysWOW64\config\systemprofile\Desktop 此外,文件夹需要对“驱动”Office 的任何用户的写入权限。

总之,这应该是我代码中以下语句的权限问题:

Shape shape = slide.Shapes.AddPicture(fileName, MsoTriState.msoFalse, MsoTriState.msoTrue,
    pptBoxOffsetX,
    pptBoxOffsetY, 
    pptBoxShapeDimensionX,  
    pptBoxShapeDimensionY);

我在文件名参数中使用的文件夹中也有完全控制权(网络服务用户的读写权限),但没有成功的结果。我认为这是一个权限问题,因为如果我将 IIS 身份更改为我的本地用户名(是管理员帐户)而不是网络服务,则此语句有效并且 Web 应用程序可以满足我的需要。因此,需要配置更多内容才能使用网络服务帐户作为 IIS 标识成功调用 AddPicture 方法。奇怪的是互操作方法 slide.Shapes.AddShape 正在工作,但 AddPicture 没有。任何帮助,将不胜感激。提前致谢!!!

4

0 回答 0