在 Web 服务中,我需要使用 Windows 身份验证和 asp.net 模拟调用同一网站内的另一个 Web 服务
本文关键字:服务 Web 调用 net 模拟 另一个 asp 网站 身份验证 Windows | 更新日期: 2023-09-27 18:32:54
背景/系统信息
- Windows Server 2008 Standard x64, IIS 7.0
- 我有一个包含单个 IIS 应用程序的 IIS 站点。
- 每个应用程序都包含用 .NET 4.0 编写的 Web 服务,使用 Any CPU 编译。
- 所有应用程序共享同一个应用程序池。 应用程序池设置为 .NET 4.0 和集成管道。
- 该站点设置为 ASP.NET 模拟和 Windows 身份验证。
- 该网站仅在我们的域/内联网内使用。
- 客户端应用程序(C# 应用程序不在 Server 2008 框中运行,而是在域中运行(使用生成的代理类,通过方法 System.Net.CredentialCache.DefaultCredentials传递凭据。
目标
- 我们有一些 Web 服务方法
- 需要调用存在于同一站点中的 Web 服务方法,只是站点下的另一个 IIS 应用程序。
问题
- 当第一个 Web 服务方法调用第二个 Web 服务方法(通过生成的代理类(传递 DefaultCredentials 或 DefaultNetworkCredentials 时,我收到 401 未经授权的错误。
这是我所知道的和我尝试过的
-
我几乎看过所有关于某某的文章,每个人都在谈论双跳。 我对双跳的术语感到困惑。 我不是在跳到一台新机器上,而是在同一网站的当前机器上。 这不是双跳吧?
-
我们在 Windows Server 2003 上的 IIS 6 中运行与 .NET 1.1 相同的 Web 服务,并将 DefaultCredentials 传递给第二个 Web 服务调用即可! 没有 401 错误。 IIS 6 上的 Web 服务安装程序都使用相同的应用程序池,并且都设置为应用程序。
-
在运行IIS 7.5的Windows 7开发机器上,我能够完成这项工作。 我可以使用另一个 Web 服务的代理类调用 Web 服务,使用 System.Net.CredentialCache.DefaultNetworkCredentials 或 System.Net.CredentialCache.DefaultCredentials。 看来我的 win7 IIS 7.5 站点和我的服务器 2008 站点的设置方式相同。
-
我尝试为站点中的每个应用程序使用不同的应用程序池(集成管道(,但这没有帮助(我认为不会(。
-
当我将应用程序池设置为经典池时,站点将无法启动。 我收到服务不可用错误。 这很奇怪,因为在我的 win7 机器上,我可以使用经典或集成管道,并且它工作正常。
我觉得我离得很近。 任何想法或意见将不胜感激!
谢谢
我的问题是双跳。
此链接可以提供帮助http://odetocode.com/blogs/scott/archive/2005/02/24/roadmap-to-delegation.aspxhttp://blogs.msdn.com/b/larryosterman/archive/2004/06/29/169085.aspx
瓦甘