我一直在试验 ASP.Net MVC,并且遇到了一个可能与 MVC 无关的问题。但我无法在默认 MVC 应用程序(创建新 MVC 项目时由向导创建的应用程序)中获得身份验证,以便在 Windows 7 上的 IIS 7 下正常工作。
如果我在 Visual Studio 环境下运行,它可以工作,但如果我将设置切换为在 IIS 下运行,我会在尝试提交登录或注册时遇到以下异常:
由于检索用户的本地应用程序数据路径失败,无法生成 SQL Server 的用户实例。请确保用户在计算机上有本地用户配置文件。连接将被关闭。
我相信这是因为该网站在我自己的 Visual Studio 帐户下运行,但在 IIS 中的 IUSR 帐户下运行。到目前为止,谷歌对异常消息的搜索一直没有帮助。
那么,可以为 IUSR 帐户创建本地用户配置文件吗?如果是这样,怎么做?我还应该做些什么来让 SQLExpress 引擎在 IIS 7 中的匿名帐户下工作?
我也尝试将 IIS 网站配置为使用我的帐户,但由于这是我的家用计算机,我的帐户没有密码,而且似乎 IIS 不会让网站配置为使用没有密码的帐户。或者,由于这是我第一次使用 IIS 7,并且配置感觉与 IIS 5/6 非常不同,我只是缺少正确的设置,可以让我配置用于匿名访问的帐户。
编辑:一些附加信息。如果我清空 App_Data 文件夹并从 IIS 重试,SQLExpress 会尝试创建我的数据库并失败,但异常消息包含更多信息以及以下建议。
SQLExpress 数据库文件自动创建 错误:
连接字符串使用应用程序 App_Data 目录中的数据库位置指定本地 Sql Server Express 实例。提供者试图自动创建应用程序服务数据库,因为提供者确定该数据库不存在。成功检查应用程序服务数据库是否存在并自动创建应用程序服务数据库需要以下配置要求:
- 如果应用程序 App_Data 目录尚不存在,则 Web 服务器帐户必须对应用程序目录具有读写权限。这是必要的,因为如果 App_Data 目录不存在,Web 服务器帐户将自动创建它。
- 如果应用程序 App_Data 目录已存在,则 Web 服务器帐户只需要对应用程序 App_Data 目录的读写权限。这是必要的,因为 Web 服务器帐户将尝试验证 Sql Server Express 数据库是否已存在于应用程序 App_Data 目录中。从 Web 服务器帐户撤消对 App_Data 目录的读取访问权限将阻止提供程序正确确定 Sql Server Express 数据库是否已存在。当提供程序尝试创建现有数据库的副本时,这将导致错误。需要写入权限,因为在创建新数据库时会使用 Web 服务器帐户凭据。
- 机器上必须安装 Sql Server Express。
- Web 服务器帐户的进程标识必须具有本地用户配置文件。有关如何为计算机和域帐户创建本地用户配置文件的详细信息,请参阅自述文件。
我已经非常广泛地确认前三个建议已经得到满足。第四个似乎是我的问题的原因,但我不知道该怎么做。尽管该建议声称有一个描述它的自述文件,但我无法找到该文件。