【问题标题】:How to create folders in website running in IIS 7 at runtime with all permissions?如何在运行时在 IIS 7 中运行的网站中创建具有所有权限的文件夹?
【发布时间】:2012-08-13 18:16:14
【问题描述】:

我的应用程序应该在执行期间创建文件夹结构,它将在其中创建、存储和处理运行时生成的文件。该系统已经在桌面应用程序中进行了测试,并且工作正常。现在我正在尝试在 C# asp.net webforms DNN 项目中使用它,但它没有达到预期。

当我调试项目时,目录是在以下位置创建的,我不明白的原因(但应用程序执行良好):

C:\Program Files\Common Files\microsoft shared\DevServer\10.0\

当我通过 localhost 环境(IIS 7,.NET 4.0,集成管道模式)运行相同的应用程序时,抛出以下异常:

发生了严重错误。访问路径 'c:\windows\system32\inetsrv\Processing\' 被拒绝。

“处理”目录也不是根据经过验证的应用程序逻辑创建的。

我希望在 IIS 中执行的应用程序的 bin 文件夹中创建此文件夹结构。我通过根据应用程序的 bin 文件夹中的要求创建虚拟目录结构,在所需位置手动创建了文件夹结构,但这也无济于事。

所以我的问题是:

  • 请有人澄清一下,网站创建的目录和文件在 IIS 中托管时应该如何以及在何处保存。
  • 我需要执行哪些步骤来确保在我的应用程序的 bin 文件夹中创建文件和目录,该应用程序在 IIS 7 中执行并具有所有权限。
  • 为了实现这一点,我是否需要进行任何代码修改。

非常感谢任何指向我写作方向的链接和答案。

谢谢!

【问题讨论】:

    标签: c# asp.net iis dotnetnuke


    【解决方案1】:

    默认情况下,您的 Web 服务器(IIS 或本地开发服务器)只会保存到其工作目录。如果要保存到特定路径,请使用MapPath(或Server.MapPath)获取与您的应用程序对应的物理路径。例如:

    string path = MapPath("~/bin");
    

    您还需要确保运行 IIS 的帐户对您需要写入的目录具有读/写权限。这意味着进入您的服务器并修改文件夹的权限。要查找用户帐户,您必须转到应用程序池下的高级设置并检查为身份设置的内容。

    【讨论】:

    • 这正是问题所在 - 我正在使用 Environment.CurrentDirectory 获取桌面应用程序中的位置,该位置返回了 Web 应用程序中 Web 服务器的工作目录。您的解决方案完美地解决了它。谢谢!
    猜你喜欢
    • 2012-02-15
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 2010-11-19
    • 1970-01-01
    相关资源
    最近更新 更多