【问题标题】:Filepaths within DLL component of ASP.NET websiteASP.NET 网站的 DLL 组件中的文件路径
【发布时间】:2012-02-02 01:22:11
【问题描述】:

我希望这不是太含糊。 我编写了一个 C# 组件,它使用 UNC 路径引用我的文件系统。 我在 ASP.NET Web 应用程序中使用它。 该组件在 Visual Studio 中运行良好。 (顺便说一句:在 WinForm 应用程序中引用时它也可以正常工作)。 当我将其与 Web 应用程序一起部署到 IIS(bin 文件夹中已编译的 DLL)时,DLL 无法找到具有 UNC 路径的文件。 有什么想法吗?

【问题讨论】:

  • 你能显示一个代码 sn-p 来说明你如何引用你所引用的 UNC 路径
  • 运行 IIS 的身份(用户)可能没有权限访问虚拟目录之外的文件。这是常见问题之一,这可能会帮助stackoverflow.com/questions/1479711/…
  • 什么意思,找不到文件?是否抛出异常?什么例外?

标签: asp.net unc


【解决方案1】:

为该网站运行应用程序池的用户需要访问该共享文件夹。由于那是另一台机器,您将不得不将应用程序池用户从默认更改为以下之一:

1:在两台机器(IIS 所在的机器和托管文件共享的机器)上使用完全相同的用户名和密码创建一个用户帐户

2:使用活动目录帐户(如果有的话),假设两台机器都是同一个 AD 的成员


3:尝试将该 UNC 文件夹映射到网站所在计算机上的驱动器号。也许(我不确定),您将能够为现有/默认应用程序池用户帐户设置 [读取] 权限。


当您从 VS 运行应用程序时它可以工作的原因是因为它在 您的 用户帐户下运行(并且您可能是管理员,也可以访问该网络共享)。与该桌面应用程序相同:正在运行它。 ASP.NET 应用程序由非登录用户的用户帐户运行/执行(好吧,除非您将其更改为)。

您将看到需要指定应用程序池帐户的密码(如果您选择更改密码)。这是因为 IIS 可以(默认情况下)运行,即使没有人交互式(人类,看着桌面)登录到该机器。应用程序池用户实际上确实登录到了机器,但不是交互式的(该登录模式还有另一个名称;我认为是“批处理”)。您会在 c:\users 文件夹中找到该用户的个人资料。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2011-02-03
    • 2011-03-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 2012-08-07
    相关资源
    最近更新 更多