0

我有 WebApi 和 ac# 客户端应用程序。为了运行集成测试,我在这样的基类中使用 owin self host:

Namespace IntegrationTest {
  [SetUpFixture]
  Public Class ServerManager {

    Privet Static IDisposable server;

    [SetUp]
    Protected Static Void StartAPI() {
      server = WebApp.Start<Startup>.("Https://localhost:8080");
      LogIn();
    }

    Public Static Void LogIn() {
      Clientdll.Login(*some Parma's);
    }

   [TearDown]
   Protected Static Void Shutdown API() {
     LogOut();
     server.Dispose();
   }
 }
}

所有测试都在我的计算机上本地通过,就像其他计算机从 TFS 服务器获取代码一样,但是当我在团队城市运行测试时,它失败并显示此异常:---> System.Net.Http.HttpRequestExeption:An发送请求时发生错误。

---> 系统。Net.WebExeption:底层连接已关闭:发送时发生意外错误。

系统。IO.IOExepyion:无法从传输连接读取数据:远程主机强制关闭现有连接。---> 系统。Net.Socket.SocketExeption : 一个令人兴奋的连接被远程主机强行关闭。

4

1 回答 1

0

我看到您正在使用 HTTPS 来托管您的 API。您是否已将团队城市机器配置为在端口 8080 上支持 HTTPS?如果 HTTPS 配置不正确(不知道为什么会出现这种情况),在 HTTPS 上创建 HTTP 侦听器不会引发异常,但尝试调用没有附加证书的 HTTPS 端点会导致你描述的错误。

要支持 HTTPS,您需要:

  1. 为团队城市机器创建证书。由于您是在机器内运行测试,因此您可以选择自签名证书。如果那台机器上有 IIS,则可以使用它来创建证书,如果没有,请下载 MakeCert.exe 并使用它来创建证书(确保使用 cn=localhost)。在此处查看更多信息如何为 localhost 创建自签名证书?

  2. 使用 cmd (netsh http set sslcert) 中的 netsh 命令将证书注册到端口 8080。有关说明,请参见此处https://msdn.microsoft.com/en-us/library/ms733791.aspx

于 2016-09-14T07:20:51.760 回答