我在.Net Core 2.1中有一个webapi。我已使用Visual Studio 2017随附的Microsoft SQL Management Studio来制作webapi用于处理其数据的数据库。当我在Visual Studio上运行它(webapi)时,它可以很好地工作,我可以通过POSTMAN进行调用,并且得到的响应很好,但是当我在本地IIS上部署webapi时出现了问题。我收到此错误页面:
启动应用程序时发生错误。 Win32Exception:未知错误(0x89c50118) 位置不明 SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称正确,并且已将SQL Server配置为允许远程连接。 (提供者:SQL网络接口,错误:50-发生本地数据库运行时错误。无法创建自动实例。有关错误详细信息,请参阅Windows应用程序事件日志。 ) System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity身份,SqlConnectionString connectionOptions,SqlCredential凭证,对象providerInfo,字符串newPassword,SecureString newSecurePassword,布尔重定向的UserInstance,SqlConnectionString用户连接选项,SessionData reconnectSessionData,布尔applyTransientFaultHandling) Win32Exception:未知错误(0x89c50118)
我在appsetting.json中具有相同的connectionString,因为在Visual Studio中运行webapi时数据库是相同的,所以,我不知道我在做什么错。
我需要在IIS或数据库上进行任何特定的配置吗?有什么帮助吗?
答案 0 :(得分:1)
在Visual Studio上运行webapi时,Visual Studio用您的本地帐户启动IISExpress,此帐户将连接数据库(查看连接字符串:Data Source =。\ SQLEXPRESS; Initial Catalog = database; Integrated Security = True)。该帐户默认拥有数据库权限。
现在,如果要在IIS上运行webapi,则有两种方法:
添加一个可以访问您的数据库并更改您的连接字符串的帐户
从SQL Management Studio添加IIS应用程序池标识帐户,然后更改权限。