我编写了一个.NET Web应用程序来建立Perforce连接,但始终得到以下错误消息。此问题仅在我发布到服务器时发生。当我在本地机器上运行这个应用程序时,它运行的非常好,但是在服务器上,当我尝试登录时,它看起来一直在失败。
P4Exception:致命客户端错误;断开连接!“客户端-设置通道”操作失败。试图获得锁C:\WINDOWS\system32\config\systemprofile\p4tickets.txt.lck.的尝试太多了
c:\tmp\104564385\P4.NET\r19.2\p4api.net\p4api.net\P4Exception.cs:393中的Perforce.P4.P4Exception.Throw(字符串cmd、String[] args、P4ClientErrorList错误、P4ClientInfoMessageList详细信息)
c:\tmp\104564385\P4.NET\r19.2\p4api.net\p4api.net\P4Server.cs:1106中的Perforce.P4.P4Server.RunCommand(字符串cmd、UInt32 cmdId、布尔标记、String[] args、Int32 argc)
c:\tmp\104564385\P4.NET\r19.2\p4api.net\p4api.net\P4Command.cs:503中的Perforce.P4.P4Command.RunInt(StringList标志)
c:\tmp\104564385\P4.NET\r19.2\p4api.net\p4api.net\P4CommandResult.cs:142 Perforce.P4.P4Command.Run中的Perforce.P4.P4CommandResult..ctor(P4Command cmd,StringList标志)(StringList标志)
c:\tmp\104564385\P4.NET\r19.2\p4api.net\p4api.net\Connection.cs:1071中的Perforce.P4.Connection.Login(字符串密码,布尔allHostTicket)
以下是连接/登录的部分代码
private void Connect(Connection con)
{
con.UserName = username;
if (con.Client == null)
{
con.Client = new Client();
con.Client.Name = "";
}
con.Connect(null);
con.Login(password);
}我还试图在这里使用P4. P4.Option和存储密码,并将其作为参数传递给con.Connect(),而不是使用con.Login(),但问题是相同的(仅当我发布到服务器时)。
有人能帮忙解决这个问题吗?
发布于 2020-01-03 21:39:58
这看起来像是服务器文件系统上的权限问题。默认情况下,登录票使用%USERPROFILE%/p4tickets。您的应用程序是以System用户的身份运行的,该用户没有普通的Users目录,因此它试图将其票证写入系统文件夹(该应用程序可能实际上没有写入该文件夹的权限)。
通常,我会使用p4 login -p来解决这个问题,以避免在实际的文件系统上需要一个票证文件。另一个可能的修复方法是显式地将票证文件位置设置为您确信是可写的路径。
https://stackoverflow.com/questions/59585556
复制相似问题