【问题标题】:Web Application working in VS Development Server but don't work in IISWeb 应用程序在 VS 开发服务器中工作,但在 IIS 中不工作
【发布时间】:2010-07-06 07:18:39
【问题描述】:

我有一个 ASP.Net 应用程序,它利用 SQL Server 存储过程和使用 Windows 身份验证的 Web 服务。这个想法是使用登录的用户凭据来调用 Web 服务(这很关键,因为 Web 服务使用身份验证凭据来分配创建或更新记录的所有者)并执行存储过程。

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

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

我正在使用

myService.Credentials = System.Net.CredentialsCache.DefaultCredentials

Web 服务主机虚拟目录和我的应用程序虚拟目录都在 IIS 的目录安全中使用 Windows 身份验证。

有人知道吗???

【问题讨论】:

  • 我的环境是:在带有 VS 2008、SQL Server 2008、IIS 6.0 的 Virtual PC 上运行的 Windows Server 2003。 IIS 在本地系统帐户下运行
  • 应用程序池标识是网络服务
  • 允许域或 ASP.Net 用户在数据库权限下访问该数据库

标签: .net asp.net iis sql-server-2008 visual-studio


【解决方案1】:

您的本地 IIS 最有可能运行托管您的 asp.net 作为用户网络服务的应用程序池。
您的 asp.net 应用程序似乎没有正确使用 windowsauthentification。你确定你正确记录了吗?创建一个新的空白页并为 Page_Onload 方法设置一个断点。在你那里去(我认为它是提示窗口)并输入 this.User.Identity.Name 并查看它是否与你的 Windows 登录匹配

【讨论】:

  • 我已经使用调试检查了同一页面,代码 Page.User.Identity.Name 给出了登录用户的正确名称,即“CONTOSO\\Administrator”
【解决方案2】:

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

【讨论】:

  • 我已经提到“Web 服务主机虚拟目录和我的应用程序虚拟目录都在 IIS 的目录安全中使用 Windows 身份验证。”
【解决方案3】:

很遗憾,我没有找到原因。但是为了解决这个问题,我使用了模拟。

关于不返回任何值的 SP。我发现我使用了来自 SP 的视图以及一些如何登录的 windows 帐户对这些视图没有足够的权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多