Team Foundation Server に接続するプログラムを作成しています。すべて正常に動作します。しかし、.exe ファイルの名前を "TfsBugs_фЫвваП.exe" のように変更すると (ロシア語の大文字が 1 つ以上)、アプリがクラッシュします。connect 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: 指定された値に無効な制御文字が含まれています。パラメータ名: 値 × System.Net.WebHeaderCollection.CheckBadChars(文字列名、ブール値 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, String command)
в Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.CreateWebRequest(Uri uri)
これは問題だと思います: System.Net.HttpWebRequest.set_UserAgent(String value) しかし、なぜ UserAgent がサーバーに渡されるのでしょうか? 接続する必要はありません。何かイディア?