我是WCF服务的新手
我有WCF服务,我用它来对共享驱动器进行文件操作。 当我尝试写/读到共享位置时,它会抛出一个Exception说 “登录失败未知用户名或密码错误”
我可以在运行良好的代码中进行文件操作,问题是我已将所有代码移动到WCF服务,现在我得到了上述异常。
任何帮助将不胜感激
感谢 维诺德
答案 0 :(得分:2)
如果您说WCF服务,则表示承载WCF服务的Windows服务。如果名称和密码写得正确,我会检查Windows服务的身份。
如果WCF服务托管在IIS中,则它可以是应用程序池的标识,也可以是充当IIS匿名帐户的帐户。
在上述两种情况下,也可能是如何调用WCF服务,如果您使用的是Windows身份验证,请确保正确设置了身份。
根据您的评论,它似乎是尝试访问文件的登录用户的凭据。同时文件位于不同的磁盘上。我最好的猜测是您使用的是无法访问文件位置的用户帐户。
答案 1 :(得分:0)
Vinod,用于访问文件系统的帐户是System.Security.Principal.WindowsIdentity.GetCurrent(),请检查此项。 如果您看到ASPNET,那么您就不会被模仿。
<identity impersonate="true"/>
无效,因为默认情况下WCF服务不使用ASP.NET管道(因此您无权访问HttpContext)。如果它不是您想要的,请按照here所述打开aspnet兼容性。
ASP.NET模拟:默认情况下,WCF 请求始终作为IIS运行 进程标识,即使ASP.NET是 设置为使用启用模拟 System.Web的配置 选项。
解决方案:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled=”true” />
</system.serviceModel>
还有另一种模仿用户的方式(更好,因为它不依赖于ASP.NET所以如果您决定使用Windows服务而不是ASP.NET,但我还没有测试过,那就不足为奇了),看一看here