2010-07-06 90 views
3

我有一个ASP.Net应用程序,它利用SQL Server存储过程和使用Windows身份验证的Web服务。这个想法是使用登录用户凭证来调用Web服务(这是至关重要的,因为Web服务使用认证凭证来分配创建或更新的记录的所有者)并执行存储过程。Web应用程序工作在VS开发服务器,但不工作在IIS

当我使用VS.Net集成web服务器时,结果很好(可能是因为此服务器在当前登录的用户帐户下启动)SQL Server SP返回预期结果(即使从查询分析器执行它们时)并且Web服务凭据已正确设置为当前登录的用户。

但是,当我在本地IIS中托管应用程序时,它并不像预期的那样工作。 Sql Server存储过程返回EMPTY数据集,Web服务凭据设置为空。

我使用

myService.Credentials = System.Net.CredentialsCache.DefaultCredentials

博特Web服务主机的虚拟目录,我的应用程序虚拟目录中的IIS目录安全性使用Windows身份验证。

任何人有任何想法???

+0

我的环境是:运行在VS 2008,SQL Server 2008,IIS 6.0的Virtual PC上的Windows Server 2003。 IIS在本地系统帐户下运行 – 2010-07-06 07:22:03

+0

应用程序池标识为网络服务 – 2010-07-06 07:38:20

+0

允许域或ASP.Net用户访问该数据库,在数据库权限下 – 2010-07-06 07:46:06

回答

0

不幸的是,我还没有找到原因。不过为了解决这个问题,我使用了模拟。

关于SP返回没有任何值。我已经发现我已经使用SP中的视图,以及一些如何登录的Windows帐户没有足够的权限在这些视图。

1

您的本地IIS最喜欢运行将您的asp.net作为用户网络服务的应用程序池。
这似乎是你的asp.net应用程序不正确使用windowsauthentification。你确定你正确地登录了吗?创建一个新的空白页面并为Page_Onload方法设置一个断点。在那里你去(我认为它的提示窗口),并键入this.User.Identity.Name,看看它是否符合你的Windows登录在IIS管理器下登录

+0

我已使用调试和代码检查相同页面 Page.User.Identity .Name给出登录用户的正确名称,即“CONTOSO \\ Administrator” – 2010-07-06 07:33:59

+0

应用程序池标识是网络服务 – 2010-07-06 07:37:40

0

。点击网站 - >属性并选择目录安全。然后选择匿名访问和身份验证控制,然后选择Windows集成以允许Windows域用户。访问网站

+0

我已经提到 “在Web服务主机虚拟目录和我的应用程序虚拟目录正在使用IIS的目录安全中的Windows身份验证“。 – 2010-07-06 07:35:36

相关问题