代码之家  ›  专栏  ›  技术社区  ›  MUG4N

系统网Http。WinHttpException:访问被拒绝?

  •  1
  • MUG4N  · 技术社区  · 7 年前

    我实现了两个aspnet核心webapi服务。第一个服务(.net core)使用restsharp调用第二个服务(.net framework 461):

     public static RestResponse Execute(this IRestClient client, IRestRequest request)
        {
            var taskCompletion = new TaskCompletionSource();
            client.ExecuteAsync(request, r => taskCompletion.SetResult(r));
            return (RestResponse)(taskCompletion.Task.Result);
        }
    

    请注意,任务是故意同步调用的,因此 .Result 在代码中。此外,此方法使用经过身份验证的用户调用impersonated!

    这两个服务都托管在IIS中,并配置为使用Kerberos windows身份验证。这两个服务都以管理员身份运行。只有第一个服务使用https,另一个仅使用http,但两者都使用与绑定url相同的域。现在,当我在本地开发环境中调试这两个服务时,一切都正常。将代码移动到IIS时,出现以下异常:

    enter image description here

    调用上述方法时出错 Execute . 如果Kerberos有问题,我已经检查了事件日志,但没有看到任何与Kerberos相关的问题。在我的日志文件中,我还可以看到第二个服务没有运行任何代码,调用也没有那么远。

    谁能给我指一下正确的方向吗。我不知道是什么导致了这个问题。

    使现代化 我尝试从服务器外部调用Firefox的两个服务,这两个服务都工作了几次,但在服务器重新启动后,它就不再工作了。非常奇怪的行为。

    1 回复  |  直到 7 年前
        1
  •  0
  •   MUG4N    6 年前

    我发现,我们得到的例外情况是由于错误地将服务主名称分配给这两个服务。这两个服务都在同一台机器上运行,这诱使我们对这两个服务使用相同的SPN,但端口不同。这是个坏主意(不要那样做!)并导致了各种奇怪的异常,比如WebException“拒绝访问”。

    为每个服务分配一个唯一的SPN解决了问题,异常也消失了。