【问题标题】:IIS server not loading the databaseIIS 服务器未加载数据库
【发布时间】:2013-03-10 14:43:58
【问题描述】:

我使用 asp.net 创建了一个网站,当我使用 Visual Studio 开发服务器运行它时,一切都运行良好,但是当我尝试通过 IIS 服务器运行它时,网站的主页会加载,但无法与数据库服务器

<add connectionString="Data Source=ASHUTOSH-PC\SQLEXPRESS;Initial Catalog=CloudStorage;Integrated Security=True" name="connectionStr"/>
</connectionStrings>

这在 Visual Studio 开发服务器上可以正常工作,但不能在 IIS 上运行......请帮助

【问题讨论】:

  • 请包含连接字符串,并请包含运行您的应用程序的应用程序池的用户名。
  • @Aron 我已更新,请检查
  • 你的服务账号没有权限连接数据库。\
  • @Hogan 我应该怎么做才能连接它
  • @AshutoshSinghRathore - 更改连接字符串以使用具有权限的用户或授予服务帐户权限。 (取决于您的设置和用户版本——ASPNET 或 NETWORKSERVICES 或其他用户。)检查 SQL 服务器日志以查看谁尝试连接。

标签: asp.net sql-server iis


【解决方案1】:

由于您使用的是Integrated Security=True,因此您使用应用程序池身份连接到数据库。运行 Cassini 时,您使用自己的凭据。您应该使用有权登录和查询 SQL Server 的用户设置应用程序池标识。

【讨论】:

  • @AshutoshSinghRathore - 你给Network Service你的数据库权限了吗?
  • 因为我是这个域的新手。你能告诉我如何在 sql express 中授予 db 权限..
  • 你需要Management Studio 这是一个很好的参考:msdn.microsoft.com/en-us/library/aa337562.aspx。确保提供运行代码所需的所有数据库角色。
  • 我建议两件事:1.尝试以应用程序池用户身份运行管理工作室,看看您是否可以登录并查询数据库。 2. 尝试使用 SQL Server 身份验证排除其他问题,并确保问题与 Windows 身份验证有关。
  • 感谢帮助,我认为问题出在 Windows 身份验证上,我将其更改为 sql server,现在可以正常工作了
【解决方案2】:

来自MSDN

当您使用 ASP.NET 开发服务器运行页面时,该页面在您当前用户帐户的上下文中运行。例如,如果您以管理员级别的用户身份运行,则在 ASP.NET 开发服务器中运行的页面将具有管理员级别的权限。相比之下,在 IIS 中,ASP.NET 默认运行在通常具有有限权限的特殊用户(ASPNET 或 NETWORK SERVICES) 的上下文中。 ASPNET 或 NETWORK SERVICES 帐户是服务器计算机的本地帐户(不是域帐户),这限制了对其他计算机上资源的访问。

数据库访问
使用 ASP.NET 开发服务器时,通常可以依靠 Windows 集成身份验证来访问 SQL Server。但是,当同一页面在 IIS 中以 ASPNET 或 NETWORK SERVICES 帐户运行时,该页面在本地用户的上下文中运行,并且您通常必须将页面配置为使用包含有关用户名和密码。详情请见Accessing SQL Server from a Web ApplicationASP.NET Security Architecture

【讨论】:

    猜你喜欢
    • 2016-07-31
    • 2015-12-18
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多