Pir*_*e X 5 sql-server asp.net iis sql-server-2016
我最近在IIS(LocalDB)上部署了我的网站.但每当我尝试运行网站时,SQL都无法连接.我现在已经浏览了数百个帖子/文章,但我无法解决它.
错误
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:50 - 发生本地数据库运行时错误.无法创建自动实例.有关错误详细信息,请参阅Windows应用程序事件日志.)
Windows应用程序事件日志
Windows API调用SHGetKnownFolderPath返回错误代码:5.Windows系统错误消息是:访问被拒绝.在线报道:422.
第二个日志 -
无法获取本地应用程序数据路径.很可能没有加载用户配置文件.如果在IIS下执行LocalDB,请确保为当前用户启用了配置文件加载.
我的连接字符串(试过两个) -
<appSettings>
<add key="ConnectionString" value="Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=test;Integrated Security=True" />
<!--<add key="ConnectionString" value="data source=(LocalDB)\MSSQLLocalDB;UID=SOME_USERNAME;PWD=SOME_PASSWORD;initial catalog=test;connection timeout=30"/>-->
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我尝试编辑applicationHost.config.
加载用户个人资料对我来说已经是真的
我的ApplicationHost.config文件
<applicationPools>
<add name="Classic .NET AppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" />
<add name=".NET v2.0 Classic" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" />
<add name=".NET v2.0" managedRuntimeVersion="v2.0" />
<add name=".NET v4.5 Classic" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" />
<add name=".NET v4.5" managedRuntimeVersion="v4.0" />
<add name="ASP.NET v4.0" managedRuntimeVersion="v4.0">
<add name="DefaultAppPool" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated">
<processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="true" />
</add>
</applicationPools>
Run Code Online (Sandbox Code Playgroud)
DefaultApplicationPool -
编辑 -
使用添加IIS Apppool
icacls c:\inetpub\wwwroot /grant "IIS APPPOOL\DefaultAppPool":(OI)(CI)(RX)
Run Code Online (Sandbox Code Playgroud)
仍然无法连接.
任何帮助表示赞赏.
我使用Visual Studio 2015和SQL Server 2016在Windows 10上.
遇到了同样的问题。不过,我并未尝试您所做的所有事情。我做了以下工作:
.NET v4.5)IdentityApplicationPoolIdentity,和您一样)更改为LocalSystem。我可以看到两个可能的错误。
假设您的 SQL 服务器与 IIS 位于同一机器上,并假设按照 ConnectionString 的建议,您使用命名实例“MSSQLLocalDB”安装了 SQL 服务器,您的连接字符串应为:
Data Source=localhost\MSSQLLocalDB;Initial Catalog=test;IntegratedSecurity=True"
Run Code Online (Sandbox Code Playgroud)
如果 LocalDB 在另一台计算机上,请不要使用主机名(除非您有 DNS 服务器),只需使用 IP 地址。
现在,假设您的应用程序正在使用 APPPOOL\DefaultAppPool,请务必授予此用户权限以执行您打算在 SQL 中执行的任何操作(例如,如果执行存储过程)。您必须将其添加为登录名,然后授予其对数据库的 EXECUTE、SELECT、INSERT、DELETE 权限。
数据源必须始终是 /
我建议您连接 SSMS 并确认主机名。我不希望“(”或“)”出现在那里。除非您只是指您的 (LocalDB),可能是 192.168.0.1 等。
| 归档时间: |
|
| 查看次数: |
2174 次 |
| 最近记录: |