私はp4.net APIを使用してメタデータからいくつかのレポートを生成しています。p4.netはPerforceに接続できません
レポートの1つでは、チェンジセットレポートごとに変更行の番号を生成する必要があります。
レポートツールとして、私はMS SQL Reporting Services 2008を使用していますが、p4.net APIを使用して変更された行の数を計算するカスタムdllを作成しました。ローカルで問題なく動作します。しかし、サーバー上でコードを実行すると、最初の%20の部分がPerforceサーバーに接続できませんでした。 PERFORCEに接続できません!例外。
私はローカルで同じ資格情報を試して、それは動作します..私はサーバー上で同じ資格情報でコマンドラインを使用し、それは動作します。
以前に遭遇した場合は、誰でも私に助けてくれますか?
ここに私が使用するコードがあります。
public static class PerforceLib
{
public static P4Connection p4conn = null;
private static void CheckConn()
{
try
{
if (p4conn == null)
{
p4conn = new P4Connection();
p4conn.Port = "address";
p4conn.User = "user";
p4conn.Password = "pwd*";
p4conn.Connect();
p4conn.Login("pwd");
}
else if (p4conn != null)
{
if(!p4conn.IsValidConnection(true, false))
{
Log("Check CONN : Connection is not valid, reconnecting");
p4conn.Login("pwd*");
}
}
}
catch (Exception ex)
{
Log(ex.Message);
}
}
public static int DiffByChangeSetNumber(string ChangeSetNumber)
{
try
{
CheckConn();
P4Record set = p4conn.Run("describe", "-s",ChangeSetNumber)[0];
string[] files = set.ArrayFields["depotFile"].ToArray<string>();
string[] revs = set.ArrayFields["rev"].ToArray<string>();
string[] actions = set.ArrayFields["action"].ToArray<string>();
int totalChanges = 0;
List<P4File> lstFiles = new List<P4File>();
for (int i = 0; i < files.Count(); i++)
{
if (actions[i].ToString() == "edit")
lstFiles.Add(new P4File() { DepotFile = files[i].ToString(), Revision = revs[i].ToString(), Action = actions[i].ToString() });
}
foreach (var item in lstFiles)
{
if (item.Revision != "1")
{
string firstfile = string.Format("{0}#{1}", item.DepotFile, (int.Parse(item.Revision) - 1).ToString());
string secondfile = string.Format("{0}#{1}", item.DepotFile, item.Revision);
P4UnParsedRecordSet rec = p4conn.RunUnParsed("diff2", "-ds", firstfile, secondfile);
if (rec.Messages.Count() > 1)
{
totalChanges = PerforceUtil.GetDiffResults(rec.Messages[1].ToString(), item.DepotFile);
}
}
}
GC.SuppressFinalize(lstFiles);
Log(string.Format("{0}/{1}", ChangeSetNumber,totalChanges.ToString() + Environment.NewLine));
return totalChanges;
}
catch (Exception ex)
{
Log(ex.Message + Environment.NewLine);
return -1;
}
}
}
を必要に応じてあなたの助けが、私はこの問題を解決した
感謝
に関するいかなる助けが必要な場合は私に知らせてください...私はビスタ、XPとWindows 7のマシンでそれをテストし、うまく働いています。..私はデフォルトの設定で新しいWindows 2003サーバー環境をセットアップし、試してみましたが、うまくいきませんでした。 – AnarchistGeek