【发布时间】: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}&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 服务器上? 它真的在尝试联系不同的服务器,如果是,为什么?
【问题讨论】: