将工件发布到IIS上的远程TeamCity服务器时出现问题

Eri*_*oen 12 iis teamcity arr

我对TeamCity有一个相当奇怪的问题.我有一个TeamCity安装,带有本地和远程构建代理.TeamCity服务器隐藏在IIS后面,带有应用程序请求路由(ARR),以启用SSL等.我感觉这可能是问题的一部分,但我不确定.怀疑IIS是问题的一部分的另一个原因是,我试图在Azure Web App上托管TeamCity,并且得到了完全相同的行为.

问题是,在构建之后,当构建代理尝试将工件发布到服务器时,我从TeamCity服务器返回404.TeamCity认为这是一个可恢复的错误(请参阅日志),并且有时会再次尝试.最终,发布失败了.

如果我将本地代理配置为通过访问TeamCity http://localhost,一切顺利.但是,当通过公共地址(通过IIS提供)访问时,我得到404s.404内容看起来像标准的IIS 404页面.

我尝试将代理记录详细程度设置为DEBUG,但它仍然不输出它尝试调用的实际URL.

有没有人有任何关于如何解决这个问题的线索?让TeamCity代理输出它获得404的URL将是一个良好的开端.

[Publishing artifacts] Publishing 1 file [F:/tc/ba3/temp/buildTmp/out/_PublishedWebSites/**/* => dist.zip] using [WebPublisher]
[15:34:15][Publishing artifacts] Publishing 1 file [F:/tc/ba3/temp/buildTmp/out/_PublishedWebSites/**/* => dist.zip] using [ArtifactsCachePublisher]
[15:35:10]
[Publishing artifacts] Recoverable problem publishing artifacts (will retry): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>404 - File or directory not found.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>404 - File or directory not found.</h2>
  <h3>The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.</h3>
 </fieldset></div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Eri*_*oen 18

编辑:在TeamCity页面上也发现了这一点:

https://confluence.jetbrains.com/display/TCD9/Known+Issues#KnownIssues-FailuretopublishartifactstoserverbehindIISreverseproxy

失败的请求追踪(正如Terri Rougeou Donahue所提到的)是帮助我的工具.我有两个错误.

  1. 首先,StaticFileHandler没有关闭.因此,当尝试POST到/httpAuth/artefactUpload.htmlURL时,StaticFileHandler尝试在ARR处理之前处理请求.
  2. 当我关闭StaticFileHandler时,RequestFiltering模块启动,并返回错误代码404.13,即"Content Length Too Large".经过一段谷歌搜索,我发现了这个,httpmaxAllowedContentLength://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits ,描述了参数,并说"默认值是30000000,大约是28.6MB ".

解决方案是:

  1. 关闭网站的StaticFileHandler(处理程序映射)
  2. 编辑网站上"请求过滤"设置的属性,将"允许的最大内容长度"设置为合理的值.我添加了一个0(大约286MB,因为工件可以变得非常大).

maxContentLength IIS设置窗口

  • 我们昨天刚刚在服务器后面移动了代理服务器,我正试图弄清楚我的头撞墙.谢谢您的帮助!! (3认同)
  • 相信我,在最终找到解决方案之前,我也有很多牵头(不是好的),(在SO的帮助下) (2认同)