使用 IIS 从 Asp Net Core RC2 网站访问本地目录

Accessing a Local Directory from an Asp Net Core RC2 Website Using IIS

我有一个 Asp Net Core RC2 网站,它从服务器本地目录读取一些文件(我们会说 C:\temp)。虽然我可以使它在 Visual Studio 中正常工作 运行,但在部署到 C:\inetpub\myWebSite(IIS 10.0 中的 运行)时它将无法工作。

我已经尝试了 Whosebug 和我能找到的其他地方的所有研究权限方面,包括向我的 IIS APPPOOL\myAppPoolNameIUSRIIS_IUSRS 授予权限(我可以看到这些用户具有有效的读取权限,包括高级权限编辑和共享)。我已经在网站的内容根目录中尝试了虚拟目录和物理目录。我尝试将匿名身份验证身份更改为 IUSR 和应用程序池身份。

尽我所能,我无法像在 Visual Studio 中的调试模式下一样将目录作为 IIS 应用程序网站读出(IIS Express 和控制台应用程序版本都作为故意的)。请注意,该网站在 IIS 中按预期运行。另请注意,没有明显的错误;一切似乎都正常运行,但很明显数据未被读取。

我大约有 90% 的把握认为这是权限问题或相关的 IIS 设置问题。 IIS 和 Kestrel 之间的隔离可能有一些独特之处,我只是不知道这会影响我实现我想要的目标的能力。

如有任何有用的想法或建议,我们将不胜感激。

一旦我意识到它没有访问数据库,我认为这是一个 IIS 问题。我首先尝试为 SQL 服务器设置 IIS APPPOOL\<AppPoolName> 登录,但没有成功。然后我求助于 运行 将 Web 应用程序所在的 AppPool 设置为有权访问数据库的用户,这很有效。

步骤如下:

  1. 打开 IIS 管理器
  2. 在左侧导航到 Application Pools
  3. 右键单击您的应用程序所在的应用程序池 运行,然后 select Advanced Settings...
  4. Process Model > Identity 下单击其右侧的框,将出现一个省略号(三个点);单击它打开 Application Pool Identity window
  5. Select 'Custom Accountradio button and clickSet...` 并输入您希望使用的用户名和密码,并将 AppPool 运行 作为(可以访问数据库)。

顺便说一句,请记住,如果您要 运行 将 .NET Core 应用程序设置为 No Managed Code