c# - 我需要从 Web 服务中使用 Windows 身份验证和 asp.net 模拟来调用同一网站内的另一个 Web 服务

标签 c# web-services iis-7

背景/系统信息

  • Windows Server 2008 标准 x64、IIS 7.0
  • 我有一个包含各个 IIS 应用程序的 IIS 站点。
  • 每个应用程序都包含用 .NET 4.0 编写并使用任何 CPU 编译的 Web 服务。
  • 所有应用程序共享同一个应用程序池。应用程序池设置为.NET 4.0 和集成管道。
  • 该网站已设置 ASP.NET 模拟和 Windows 身份验证。
  • 该网站仅在我们的域/内联网内使用。
  • 客户端应用程序(不在 Server 2008 上运行但在域内运行的 C# 应用程序)使用生成的代理类通过 System.Net.CredentialCache.DefaultCredentials 方法传递凭据。

目标

  • 我们有一些 Web 服务方法需要调用同一站点(该站点下的另一个 iis 应用程序)中存在的 Web 服务方法。

问题

  • 当第一个 Web 服务方法调用第二个 Web 服务方法(通过生成的代理类)并传递 DefaultCredentials 或 DefaultNetworkCredentials 时,我收到 401 未经授权的错误。

这是我所知道的和我尝试过的

  • 我已经审阅了几乎所有关于 so 的文章,每个人都在谈论双跳。我对双跳的术语感到困惑。我不会跳到新机器,我在同一网站内的当前机器上。这不是双跳吧?

  • 我们在 Windows Server 2003 上的 IIS 6 中运行与 .NET 1.1 相同的 Web 服务,并将 DefaultCredentials 传递给第二个 Web 服务调用是可行的!没有 401 错误。 IIS 6 上的 Web 服务设置都使用相同的应用程序池,并且全部设置为应用程序。

  • 在我运行 IIS 7.5 的 Windows 7 开发计算机上,我能够完成这项工作。我可以使用 System.Net.CredentialCache.DefaultNetworkCredentials 或 System.Net.CredentialCache.DefaultCredentials,使用另一个 Web 服务的代理类来调用 Web 服务。看来我的 win7 IIS 7.5 站点和我的 server 2008 站点的设置方式相同。

  • 我尝试为网站中的每个应用程序使用不同的应用程序池(集成管道),但这没有帮助(我认为不会有帮助)。

  • 当我将应用程序池设置为经典时,该网站将无法启动。我收到服务不可用错误。这很奇怪,因为在我的 win7 机器上我可以使用经典或集成管道并且它工作正常。

    我感觉我已经很接近了。任何想法或意见将不胜感激!

    谢谢,

最佳答案

关于c# - 我需要从 Web 服务中使用 Windows 身份验证和 asp.net 模拟来调用同一网站内的另一个 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10421750/

相关文章:

c# - 将 MSMQ 消息发送到远程事务队列

c# - 使 Windows 窗体应用程序可移植

.net - 可以更改 WCF 服务在 jsdebug 中生成的 URL 吗?

php - 如何访问 Ratchet php 周期性循环和客户端在应用程序内发送?

asp.net - IIS 6.1 - 始终使用 Hangfire 运行网站以进行后台作业

ssl - 开发机器的 self 认证 SSL,但不是开发机器的 URL

c# - 使用 IO 在 C# 中读取十六进制

iOS-Web服务: Webservice for iOS client

c# - 在线用户数和事件 session 数

c# - 格式化字符串但省略参数(如果它为空)