【问题标题】:Access ASP.NET with database running on localhost through LAN通过 LAN 访问 ASP.NET,数据库在 localhost 上运行
【发布时间】:2014-10-02 07:21:11
【问题描述】:

我正在使用 Microsoft Visual Studio 2013 Ultimate。

我有一个与 WSN 连接的 C# 应用程序来收集所有传感器读数并将其保存在数据库中。它工作正常且稳定。

后来我决定添加 ASP.NET 应用程序(在同一软件中开发),以便局域网中的其他计算机可以访问我的页面并检查测量值。我有一个带有少量标签和按钮的 Web 表单,以确保在数据库表中向前和向后移动。当我从 Visual Studio 启动它时它工作正常,但当我尝试从 IIS 访问它时它不起作用。

我有这个错误(正文的主要部分):

在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:50 - 发生本地数据库运行时错误。无法创建自动实例。有关错误详细信息,请参阅 Windows 应用程序事件日志。

我已经安装了 IIS,我可以从我的浏览器访问“localhost”(出现 IIS 图像)。我使用 Visual Studio 中的“发布”选项发布了网站。

我在这个论坛上看到了一些非常相似的问题,但我没有找到答案。你能认出可能是什么问题吗?

问候。

【问题讨论】:

  • 运行您网站的应用程序池的帐户必须有权访问 SQL Server。您可以通过将应用程序池帐户更改为您的帐户来确认这一点,正如您所说的那样,当您从 VS 运行时它可以工作。 PS。不要让网站在您的帐户下运行,因为这不是好的做法。
  • 拜托,你能更具体地说明我应该在 IIS 中更改什么。
  • 我现在已经与网络中的其他设备完全连接,但是当我尝试打开我的 C# 应用程序以连接传感器时,我收到此消息:无法打开数据库“C:\USERS\USERNAME\DOCUMENTS\VISUAL登录请求的 STUDIO 2013\PROJECTS\PROJECT_NAME\DATABASE_NAME.MDF”。登录失败。用户“USERNAME”登录失败。我的 Windows 帐户没有任何密码,也没有向数据库添加任何密码。你能认出可能是什么问题吗?
  • 问题是我无法同时从服务器上部署的C#应用程序和Web应用程序访问数据库。例如,如果我在 web 之前启动 C# 应用程序,它是可以的,我可以使用它来收集新数据,但是如果我尝试同时从 web 访问,我在浏览器中出现错误:无法打开数据库“C:\USERS\USER \DOCUMENTS\VISUAL STUDIO 2013\PROJECTS\HOME SENSOR DATABASE\HOME SENSOR DATABASE\HOME SENSOR.MDF" 登录请求。登录失败。用户“NT AUTHORITY\SYSTEM”登录失败。
  • 说明:在执行当前网络请求的过程中发生了一个未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详细信息:System.Data.SqlClient.SqlException:无法打开登录请求的数据库“C:\USERS\USER\DOCUMENTS\VISUAL STUDIO 2013\PROJECTS\HOME SENSOR DATABASE\HOME SENSOR DATABASE\HOME SENSOR.MDF”。登录失败。用户“NT AUTHORITY\SYSTEM”登录失败。

标签: c# sql asp.net visual-studio-2013


【解决方案1】:

如果您使用 Windows 登录名连接到 sql server(在连接字符串中您将拥有 Integrated Security=true),我认为 DeanOC 的答案将适用,在这种情况下:

  1. 在 IIS 中选择右侧的 Web 应用程序,单击“高级设置”,其中会弹出一个对话框,您可以看到您的网站正在使用哪个应用程序池
  2. 关闭对话框转到应用程序池,右键单击所需的应用程序池并进入高级设置
    1. 将进程模型下的应用程序池的标识更改为您当前的 Windows 登录名。

【讨论】:

  • 谢谢!我现在可以通过 IIS 进行连接,但是当我尝试从网络中的其他计算机(或手机)访问相同的地址(都连接在同一个 wi-fi 上)时,我收到错误消息,我无法访问该页面.
【解决方案2】:

http://www.codeproject.com/Articles/674930/Configuring-IIS-ASP-NET-and-SQL-Server

一切都解释得很好。只需按照程序,它就会 - 是的,解决了。 :)

【讨论】:

    【解决方案3】:

    该消息暗示您指向的 sql server 实例没有运行,或者您指向了错误的 sql server 实例。如果您能够从 Visual Studio 运行应用程序,那么 sql server 应该正在运行,这意味着您的连接字符串是错误的。

    在发布期间,msbuild 将运行配置转换,即,如果构建配置文件设置为发布,它会将 web.config 中的连接字符串更改为 web.release.config 中的连接字符串。检查您在 IIS 网站中的连接字符串,并检查您的密码是否正确

    【讨论】:

    • 是的,我选择“发布”作为构建配置文件,我看到了不支持数据库的警告。但是当我改为“调试”时,它是一样的,所以我保持“发布”。在 web(XML 配置文件)中,我可以看到字段 中的连接字符串的名称很好,路径很好,但我不知道是否更改了某些参数。在创建数据库期间,我没有添加任何验证密码。
    【解决方案4】:

    您可以在 SQL Server 配置中启用 TCP/IP。

    Microsoft SQL Server xxx -> 配置工具 -> SQL Server 配置管理器 -> 选择 TCP/IP。右键单击并选择启用

    因此,您可以从本地计算机成功连接,但从其他服务器的 IIS 访问时连接失败。

    【讨论】:

    • 如何在 Visual Studio 2013 中启用它?
    • 否,使用安装了 SQL Server 的 SQL Server 配置管理器
    • 我在 Visual Studio 中制作了 SQL 数据库。
    • 但是您已经在您的计算机中安装了 SQL Server Express,以及 Visual Studio
    【解决方案5】:

    我认为您正在尝试从网络中的另一台计算机而不是 sql server 访问网页,在这种情况下,您必须将绑定添加到您的站点。默认情况下,该站点仅绑定到 localhost 端口 80,这意味着它只能从同一台机器内访问。您需要一个带有 dns 条目的 url 或一个静态 IP 地址来连接到您的机器。查看 IIS 绑定:

    1. http://blogs.technet.com/b/chrad/archive/2010/01/24/understanding-iis-bindings-websites-virtual-directories-and-lastly-application-pools.aspx
    2. http://technet.microsoft.com/en-us/library/cc731692(v=ws.10).aspx

    【讨论】:

    • 我没有静态 IP 地址,因为我连接的是大学的 wi-fi。我们的代理只启用了 80 端口,但我们的管理员告诉我应该可以有这个连接,因为我们是本地网络。
    【解决方案6】:

    因为当其中一个连接到您的数据库时,您以这种方式使用附加模式,另一个不能像打开文件一样使用它。只有在同一服务器中的人才能访问您的数据库。 要解决这个问题,您必须将您的数据库添加到您的 SOL 服务器管理器,然后您才能从许多设备使用它来访问它 这个连接字符串

    Data Source='server IP';Initial Catalog='database name';Persist Security Info=True;User ID='your user name';password='your password'
    

    请关注此视频 enter link description here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      相关资源
      最近更新 更多