【问题标题】:ITextSharp saying File not found when published to My serverITextSharp 在发布到我的服务器时说找不到文件
【发布时间】:2010-06-29 19:33:28
【问题描述】:

我正在使用 ItextSharp,通过这样做我得到了一个新字体

string  fontPath = Path.GetFullPath("C:\\BMSApplicationFiles\\Fonts\\FREE3OF9.TTF");
BaseFont barCodeBase = BaseFont.CreateFont(fontPath, BaseFont.CP1252, BaseFont.EMBEDDED);

该文件位于我的开发机器和服务器上的那个目录中。 当我在我的开发机器上运行它时,它工作正常,当发布到我的服务器时,我收到一条错误消息,说 FREE3OF9.TTF 没有作为文件或资源找到。 我已经两次和三次检查该文件是否确实在我的服务器上。我的应用程序完全信任 IIS。 并且 IIS 用户拥有对该文件夹的完全访问权限。我仍然得到这个错误。非常令人沮丧。 有什么想法吗??

此代码不在 Web 应用程序中,而是在 Web 应用程序引用的 DLL 类库中。我需要添加更多特殊权限吗?

【问题讨论】:

  • 一目了然 - 你确定你检查了正确用户的权限吗?
  • 是的,我已经查看了权限并验证了文件是否存在大约一百次。这就是我如此沮丧的原因

标签: c# asp.net-mvc itextsharp


【解决方案1】:

您的下一步应该是确认您认为正在发生的事情正在发生。如果您被允许,请下载并安装Process Monitor,这将允许您记录活动,包括尝试访问哪些文件以及使用哪个用户帐户。当然,在监控时应用过滤器,否则您最终会看到所有服务器上的活动......

如果这只能确认预期用户正在尝试读取正确的文件,那么字体可能有问题。尝试用另一种标准字体文件(例如 arial 或其他东西)临时替换字体文件,看看会发生什么。 (这不太可能有帮助,因为它适用于您的开发机器,但可能值得一试)

【讨论】:

  • 我已经安装了进程监视器。当我执行应该获取此字体的操作时,我看到所有其他文件,例如在进程监视器中访问的 .js 文件,但是没有任何关于字体文件的地方。我所做的是搜索茎,如果什么也没找到。我将其替换为其他常见字体,但该字体仍然出现类似错误。
  • 有一堆 Fast IO Disallowed 和 path not found 结果对应于控制器的路径,该控制器将调用访问此字体的方法,但与此文件无关。跨度>
  • 我也遇到了这个问题,并且从“进程监视器”得到了类似的结果(可能是因为我还没有弄清楚如何正确使用该工具)。无论如何,这绝对是一个权限问题,但我无法确定 iTextSharp 代码在哪个帐户下运行,因此无法正确设置权限。我现在的解决方案是构建 iTextSharp 项目,将“snk”引用从 AssemblyInfo.cs 文件中注释掉,导致代码在与我的其余代码相同的帐户下运行(即确实有正确的权限)。
【解决方案2】:

您很可能遇到了安全问题。

如果您运行 IIS7,则检查 IIS_IUSRS 组是否有权访问该文件(在资源管理器中打开文件属性,选择安全选项卡等)。

如果您运行 IIS6,请检查 IUSR_MachineName 帐户是否有权访问该文件。

【讨论】:

  • 正如我原来的帖子中提到的,我已经检查并仔细检查了所有这些。还是一样的错误
【解决方案3】:

当我试图让它与 IIS 一起工作时,我遇到了类似的错误。在 IIS 中,我必须将文件目录添加为虚拟驱动器。当我遇到类似情况时,这对我有用。希望它对你有用,祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 2010-10-26
    相关资源
    最近更新 更多