【问题标题】:Failed to generate a user instance of SQL Server due to failure in retrieving the user's local application data path由于检索用户的本地应用程序数据路径失败,未能生成 SQL Server 的用户实例
【发布时间】:2011-06-13 19:47:27
【问题描述】:

vs2010 中的 net 项目我在 app_data 文件夹中有一个 db 和表,我创建了一个部署包并将该包导入到安装在我的本地机器上的 iis 服务器中。 现在我在尝试执行插入时收到此错误消息。

由于检索用户的本地应用程序数据路径失败,无法生成 SQL Server 的用户实例。请确保用户在计算机上有本地用户配置文件。连接将被关闭

连接字符串是:

数据源=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\survey.mdf;Integrated Security=True;User Instance=True

在 VS2010 中运行时它工作正常。

我该如何解决这个问题?

【问题讨论】:

  • 您是否在不同的凭据下运行应用程序池或 Web 应用程序?
  • leppie,对不起,我不知道你在说什么。
  • 你能告诉我们你的连接字符串吗??
  • 是的,我已经添加了连接字符串。
  • hereherethere

标签: asp.net sql-server iis-7


【解决方案1】:

删除User Instance=True。您不需要 RANU 实例。接下来,确保 SQL Server Express service account 对您的 app_data 具有所需的适当权限:

cacls <path\app_data> /E /T /G SQLServerMSSQLUser$<ComputerName>$SQLEXPRESS:F 

【讨论】:

  • 如果我使用 sql server 2005(不是 express)将我的应用程序部署在远程服务器上,我需要这样做吗?
  • Express 专门支持AttachDbFilename=|DataDirectory|... 功能。非速成版实例必须正确地永久附加数据库,并且数据库必须位于远程服务器上。
  • 我会以不同的方式问这个问题,我是否需要在要上传我的应用程序的服务器上定义一个数据库和表,或者我在 vs 中这样做就足够了?
  • 数据库部署策略取决于具体情况。通过包含 .MDF 文件的 app_data 为 ASP.Net 进行的 VS 样式部署通常仅在演示或托管场景中有用。在真实世界的非托管场景中正确部署意味着仔细规划数据库位置、部署和升级脚本,并且永远不会通过在 VS 中处理数据库模型来完成。
  • 所以我需要在服务器上创建相同的数据库并创建一个新的连接字符串,但我可以保留我的代码?
【解决方案2】:

环境解决方案:

Win 7、IIS 7.0、Visual Studio 2010、Database.mdf 文件

打开网络配置并检查连接字符串:

重要的是,请确保 AttachDbFilename 后面没有 C:\inetpub\\App_Data\

<add name="conexion" 
    connectionString="Data Source=.\SQLEXPRESS;
    AttachDbFilename=|DataDirectory|Database.mdf;
    Integrated Security=True;
    User Instance=True" />

在 IIS 7.0 中转到 ApplicationPools,找到为应用程序创建的应用程序池。

  • 点击高级设置
  • 转到身份并打开它选择自定义
  • 帐户和设置 PC 或服务器用户管理员帐户

然后到IIS 7.0中的WebSite并点击它...

  • 找到并双击身份验证图标
  • 单击匿名身份验证并选择编辑,然后选择应用程序池标识

    找到 ASP.NET Impersonation 并进行编辑,选择指定用户,然后输入凭据。

重启 IIS: cmd > iisreset/noforce 或点击重置图片按钮

【讨论】:

    【解决方案3】:

    这篇文章帮助解决了这个问题:http://support.microsoft.com/kb/2002980

    编辑来自 MSDN 文章(以防链接消失):

    Windows 7 和 Windows Server 2008 R2 的解决方案

    对于在 IIS 7.5 下运行的所有 Web 应用程序,无论它们的 项目类型,执行以下步骤:

    1. 运行 Internet 信息服务 (IIS) 管理器工具。可以从“管理”开始菜单或通过 在 Windows 开始 --> 搜索文本框中键入“inetmgr”并选择 inetmgr 工具。
    2. 在 IIS 管理器工具的左侧窗格中展开机器节点。单击“应用程序池”节点,以便应用程序 池显示在管理工具的主窗口中。
    3. 如果您正在对 ASP.NET 2.0/3.0/3.5 应用程序进行故障排除,请选择“DefaultAppPool”应用程序池。对于 ASP.NET v4 选择 “ASP.NET v4.0”应用程序池。
    4. 右键单击选定的应用程序池并选择“高级设置”
    5. 在“高级设置”对话框中找到名为“流程模型”的类别。类别中的第一行将是“身份” 行。
    6. 单击“身份”行,然后单击显示在值单元格右侧的小按钮。按钮 显示文本“...”
    7. 将弹出一个名为“应用程序池标识”的对话框。在该对话框中有两个单选按钮。确保 第一个名为“内置帐户”的单选按钮被选中。
    8. 在单选按钮下方的下拉框中,为身份选择“网络服务”。
    9. 单击“确定”关闭“应用程序池标识”对话框。
    10. 单击“确定”关闭“高级设置”对话框。
    11. 此时,对应用程序池标识的更改将保存到 IIS 7.5 的配置存储中。

    Web 应用程序项目和网站的解决方案

    对于位于用户的 Web 应用程序项目 (WAP) 和网站 托管在作为 NETWORK 运行的任何版本的 IIS 下的文档文件夹 SERVICE,执行以下步骤:

    1. 首先确认 IIS 已配置为作为网络服务运行。这是 IIS6 和 IIS7 上的默认设置。但是,如果你是 在 Windows 7 或 Window Server 2008 R2 上运行,您首先需要 按照上述“Windows 7 和 Windows Server 的解决方案”中的步骤操作 2008 R2" 使 IIS 应用程序池作为 NETWORK SERVICE 运行。
    2. 在命令提示符下,键入 net stop iisadmin /y 。这将导致所有正在运行的 ASP.NET WAP 应用程序关闭。
    3. 退出所有正在运行的 Visual Studio 实例。
    4. NETWORK SERVICE 必须被授予对位于用户 Documents 文件夹中的顶级 Visual Studio 文件夹的读取权限。这 Visual Studio 文件夹将有不同的名称,具体取决于 版本:“Visual Studio 2005”、“Visual Studio 2008”或“Visual 工作室 2010”。
    5. NETWORK SERVICE 必须被授予对项目顶级项目文件夹的读取和写入权限。例如,如果您的 WAP 项目名为“MyCustomWebProject”,然后是文件夹 “Documents\Visual Studio 20xx\Projects\MyCustomWebProject”需要 已为 NETWORK SERVICE 启用读写访问权限。或者,如果您的 webiste 项目名为“MyCustomWebProject”,然后文件夹 “Documents\Visual Studio 20xx\Websites\MyCustomWebProject”需要 已为 NETWORK SERVICE 启用读写访问权限。
    6. NETWORK SERVICE 必须被授予对位于 Web 项目目录中的 App_Data 文件夹的读取和写入权限 结构。

    【讨论】:

    【解决方案4】:

    我的解决办法是

       - On IIS ->> Application pool
       - Select Default App Pool (it may be different of your website, please choose your pool)
       - Advanced setting
       - Identity: ApplicationPoolIdentity
       - Load user profile: change to true Restart IIS
    

    【讨论】:

      【解决方案5】:

      运行->INETMGR->
      转到站点选择您的站点
      然后转到右侧面板并查找“基本设置”
      然后点击“连接为”然后选择“特定用户”然后点击“设置”
      输入本地PC用户名和密码然后点击“确定”

      如果您看到两个选项都是绿色的,然后单击“测试设置”,然后确定。
      问题解决
      享受...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多