我正在编写一个连接到 Team Foundation Server 的程序。一切正常。但是,如果我将我的 .exe 文件重命名为“TfsBugs_фЫвваП.exe”(带有多个大写俄语字符),应用程序就会崩溃。它在连接 TFS 方法上崩溃并出现错误:System.ArgumentException(指定的值包含无效的控制字符。参数名称:值)
try
{
const String TFS_URL = @"https://tfs.bss.nvision-group.com";
tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(TFS_URL));
workItemStore = (WorkItemStore)tfs.GetService(typeof(WorkItemStore));
tfs.EnsureAuthenticated();
}
catch (Exception _exp)
{
MessageBox.Show("Program will be terminated \n\n" + _exp.ToString(), "Could not authenticate while connecting to TFS", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
在消息框输出中,我可以看到:
System.ArgumentException:指定的值包含无效的控制字符。参数名称:value × System.Net.WebHeaderCollection.CheckBadChars(String name, Boolean isHeaderValue)
в System.Net.HttpWebRequest.SetSpecialHeaders(String HeaderName, String value)
в System.Net.HttpWebRequest.set_UserAgent(字符串值)
в Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.PrepareWebRequestImpl(HttpWebRequest 请求,字符串 sessionId,ICredentials 凭据,IdentityDescriptor identityToImpersonate,Int32 超时,字符串cultureName)
? Microsoft.TeamFoundation.Client.TeamFoundationClientProxy.PrepareWebRequest(HttpWebRequest 请求)
в Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.CreateWebRequest(Uri uri,字符串命令)
в Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.CreateWebRequest(Uri uri)
我认为这是一个问题: System.Net.HttpWebRequest.set_UserAgent(String value) 但是为什么将 UserAgent 传递给服务器?它不需要连接。有什么成语吗?