Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
部署到IIS时出现异常:用户“IIS APPPOOL\DefaultAppPool”登录失败 我正在逐步地通过Windows通信基础4中的一些WCF例子来工作。只要服务托管在casini中,我生成的应用程序就可以正常运行。将服务部署到本地IIS时失败。当部署到IIS时,我可以浏览到IE中的svc页面。这很有效_Wcf_.net 4.0 - Fatal编程技术网

部署到IIS时出现异常:用户“IIS APPPOOL\DefaultAppPool”登录失败 我正在逐步地通过Windows通信基础4中的一些WCF例子来工作。只要服务托管在casini中,我生成的应用程序就可以正常运行。将服务部署到本地IIS时失败。当部署到IIS时,我可以浏览到IE中的svc页面。这很有效

部署到IIS时出现异常:用户“IIS APPPOOL\DefaultAppPool”登录失败 我正在逐步地通过Windows通信基础4中的一些WCF例子来工作。只要服务托管在casini中,我生成的应用程序就可以正常运行。将服务部署到本地IIS时失败。当部署到IIS时,我可以浏览到IE中的svc页面。这很有效,wcf,.net-4.0,Wcf,.net 4.0,根据第41页的书,应用程序池帐户必须是我数据库中db_所有者角色的成员。作者建议,在验证服务的正确地址后,检查应用程序池帐户的权限 如何验证承载我的WCF服务的应用程序池使用了哪个帐户?当前正在使用默认应用程序池,IIS APPPOOL\DefaultAppPool处于db_所有者角色。IIS APPPOOL\ASP.NET v4.0也处于db_所有者角色 例外是 System.Data.SqlClient.SqlException: Login failed for user 'IIS APP

根据第41页的书,应用程序池帐户必须是我数据库中db_所有者角色的成员。作者建议,在验证服务的正确地址后,检查应用程序池帐户的权限

如何验证承载我的WCF服务的应用程序池使用了哪个帐户?当前正在使用默认应用程序池,IIS APPPOOL\DefaultAppPool处于db_所有者角色。IIS APPPOOL\ASP.NET v4.0也处于db_所有者角色

例外是

System.Data.SqlClient.SqlException: Login failed for user 'IIS APPPOOL\DefaultAppPool'.
如何解决此问题?谢谢

找到的解决方案:

开放IIS 双击“连接”下的PC名称 单击应用程序池 选择您的应用程序池DefaultAppPool 然后在“操作”下的“高级设置”上单击鼠标右键, 转到“流程模型”部分,然后单击 点击标识。 现在选择NetworkService。
我也有同样的问题。问题是我集成了security=True;在我的连接字符串中,但我同时使用sql身份验证和传入凭据。我删除了集成的安全部件,一切正常。

如果您使用的是windows身份验证,并且在连接字符串中没有提及任何用户名密码,则首先需要清除:

if not exists 
(select * from sys.server_principals where name='IIS APPPOOL\DefaultAppPool') 
    create login [IIS APPPOOL\DefaultAppPool] from windows;
通过localhost运行代码时会发生什么情况: 当您从localhost运行wcf测试客户端时,它将能够在本地调试模式应用程序通过您的帐户服务调用数据库时与数据库通信。所以它可以访问数据库,因为devenv.exe正在您的用户帐户下运行

但当您在IIS中部署web服务时。现在了解此服务在IIS下运行,而不是在您的帐户下运行。因此,您需要为IIS服务分配访问权限以访问sql server进行windows身份验证。 在这里,由于访问权限问题,您的web服务将无法与SQL server通信

因此,如果使用windows身份验证连接数据库,则只需更改IIS应用程序池设置。 您需要将IIS应用程序池的标识更改为本地系统

以下是windows身份验证WCF的步骤: •打开IIS windows+R运行,然后键入inetmgr,然后单击“确定” •双击“连接”下的PC名称 •单击应用程序池 •选择您的应用程序池DefaultAppPool •然后右键单击“操作”下的“高级设置”: •进入过程模型部分,然后 •点击标识。 •现在选择LocalSystem

现在打开sql server management studio: 打开运行->然后键入ssms,然后按ok 在ssms中,使用windows身份验证帐户登录。 打开安全选项卡 展开“登录”选项卡 然后您将能够查看您的帐户

现在打开您帐户的属性 转到用户映射 然后选择要连接的数据库 然后检查要用于所选数据库的角色成员资格服务 单击“确定”

add Trusted_Connection=True;连接字符串中的属性。 保存并部署web服务。 重新启动应用程序池


您现在可以连接数据库了。

非常感谢您提供此解决方案,但请您描述一下此问题。选择NetworkService对我没有帮助,解决问题的方法是在Identity中选择Custom account(自定义帐户)选项并填写我的pc用户名和密码。感谢您的指导,现在开始出现错误:用户“WORKGROUP\\machine$”登录失败:工作非常完美,你让我免于一点头痛避免只使用代码的答案,因为它们对未来的用户没有帮助