【问题标题】:ASP.NET MVC - Website pathsASP.NET MVC - 网站路径
【发布时间】:2010-02-22 12:40:32
【问题描述】:

我正在使用第 3 方组件,它根据硬编码文件路径创建设置文件,即它们被编译到 DLL 中,例如

%APPDATA%\Vendor\Settings.ini

我创建了一些控制台/服务应用程序,它们使用它并且运行良好。但是,我现在正尝试通过我的 ASP.NET MVC Web 应用程序使用类似的方法,并且设置文件似乎永远不会写出来!

通常,如果应用程序在我的帐户下运行,例如该文件将被写入以下位置:

C:\Documents and Settings\James\Application Data\Vendor\Settings.ini

所以我想如果网站 AppPool 在同一个帐户下运行,文件将被保存到同一个地方....但是,它永远不会出现。该帐户是在 Windows server 2003 下运行的管理员帐户。

有什么想法吗?

谢谢。

【问题讨论】:

    标签: asp.net asp.net-mvc windows-server-2003


    【解决方案1】:

    您是否检查过设置文件是否创建在 Web 应用程序的 App_Data 文件夹中?如果没有,你能把一个现有的设置文件放在那里,看看它是否使用它?

    【讨论】:

    • 检查 App_Data 文件夹,那里没有任何内容。奇怪的是,当我在运行 Windows 7 x64(因此是 IIS7.0)的 Visual Studio 下运行时,这在我的开发机器上运行良好。
    • 在您的开发机器上工作,因为 Web 服务器正在使用您的凭据运行。您是否尝试在 App_Data 中提供设置文件并检查它是否使用它?
    • 是的,但尝试在 App_Data 中放置一个设置文件却没有成功。通过网站运行时,该特定目录将解析到哪里?它通常是 App_Data 文件夹吗?也许我应该手动创建一个设置文件并将其放在预期的文件夹中,而不是依赖 dll 来为我完成。
    • 我从来没有真正将它与 shell 变量映射一起使用,通常当我使用 App_Data 文件夹时,我使用 Server.MapPath( "~/App_Data/..." ) 来解决它。您可以尝试在 Web 服务器上创建一个服务帐户,将其放入工作进程组,使用它来运行您的网站并将设置文件放入其 AppData 文件夹中——可能需要使用它登录一次以创建结构。
    • 嗯,奇怪的是我在我的登录名下为具有所有目录结构的网络服务器运行网站,但设置文件没有被写出。但是,如果我手动在目录中放置一个设置文件,它将被使用。映射 %APPDATA% 目录的网站似乎存在问题。
    【解决方案2】:

    这不是关于 webpool 帐户,而是关于访客用户的帐户。

    在 IIS 中转到您网站的属性,目录安全,然后在匿名访问中单击编辑按钮,您会看到有人访问您的网站时使用了哪个帐户。

    【讨论】:

    • @VinTem,目前我不允许anonymous 访问该站点,它设置为Integrated Windows Authentication。我有一个日志,它检查网站在哪个帐户下运行,它是正在被验证的帐户。这使得将设置写入正确路径的原因变得更加不寻常。
    【解决方案3】:

    找不到解决方案,所以我决定开发一个本地 WCF 服务(它将在正确的目录路径中创建设置文件)并通过我的 Web 应用程序访问它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      相关资源
      最近更新 更多