【问题标题】:tfs webpageControl in Clustered server environment集群服务器环境中的 tfs pagesControl
【发布时间】:2017-06-29 20:58:07
【问题描述】:

我们正在尝试使用 TFS 2015 更新 3 工作项中的 WebpageControl。该控件引用了一个小型网站,该网站允许用户创建一组与 PBI 或 Bug 关联的任务。

当您单击选项卡时,网页会进入并获取当前显示的工作项数据,检索当前存在的所有任务并显示可以创建的具有不同名称的任务列表。列表项是复选框。如果名称作为选择项之一的任务已存在,则该复选框将灰显。

一旦用户检查了他们想要创建的任务,他们点击一个按钮,该按钮回调到网站,创建任务,重新加载任务列表并重新显示。

这一切都很好。有时。 TFS 服务器位于具有通过 F5 路由的公共 URL 的集群中这一事实似乎存在问题。用户使用http://tfs.mycompany.com:1234/tfs/.... 寻址 TFS,但这会路由到 SERVER1.mycompany.com 或 SERVER2.mycompany.com。

TFS 中 WebpageControl 的代码是

<Tab Label="Task Gen">
            <Control Type="WebpageControl" LabelPosition="Left">
              <WebpageControlOptions AllowScript="true" ReloadOnParamChange="true">
                <Link UrlRoot="http://SERVER02.mycompany.com:8001" UrlPath="?WIT={0}&amp;CollectionName=XXX">
                  <Param Index="0" Value="System.Id" />
                </Link>
              </WebpageControlOptions>
            </Control>
          </Tab>

有时用户会收到一条消息:

视图状态 MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保配置指定相同的 validationKey 和验证算法。 AutoGenerate 不能在集群中使用。

然后

[ViewStateException: Invalid viewstate. 
    Client IP: 10.11.12.13
    Port: 56587
    Referer: http://SERVER2.mycompany.com:8001/?WIT=123456&CollectionName=xxxx
    Path: /default.aspx
    User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; AcanoClient; Zoom 3.6.0)
    ViewState: v+KaQTHxuY9zf11uYfES7....

我已将机器密钥添加到我的小型网站,但错误有时仍然存在。我已经指定了要在 Web Page 控件中使用的特定服务器。

机器密钥是否需要在 TFS 服务器上? 它真的在尝试联系不同的服务器,如果是,为什么?

【问题讨论】:

    标签: tfs tfs-2015


    【解决方案1】:

    根据错误信息Validation of viewstate MAC failed。 有多种原因,例如

    • 原因 1:Web 应用程序在场中运行(多服务器 环境)
    • 原因2:工作进程使用IIS 7.0应用程序池 身份
    • ....更多

    cause1 导致的问题,您可以尝试使用解决方案 1a:创建显式元素和解决方案 1b:在负载均衡器中启用关联。有关分辨率的更多详细信息,请参阅 MSDN 中的此主题:Resolving view state message authentication code (MAC) errors

    【讨论】:

    • 我确实向 WebpageControl 引用的网站添加了一个机器密钥。我不确定这是否有任何好处,甚至是否需要,因为该站点是通过一个指向特定服务器的 url 引用的。不是通过农场寻址的网站。
    • 问题是我不知道把机器钥匙放在哪里。它似乎应该在 TFS WebpageControl 引用的站点上,但我总是从这个控件中明确引用服务器,我不明白为什么这是必要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 2012-09-19
    • 1970-01-01
    相关资源
    最近更新 更多