You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将GitHub SSH URL正确转换为C# Uri对象?

解决C# Uri解析GitHub SSH URL的格式异常问题

问题原因

GitHub的SSH URL格式git@github.com:user/project.git属于Git的简化写法,并非标准的SSH URI格式。当你直接拼接成ssh://git@github.com:user/project.git时,C#的Uri类会将github.com后的冒号识别为端口分隔符,而user不是有效的数字端口号,因此抛出UriFormatException。

解决方案

需要将Git简化格式转换为标准SSH URI格式:把@后的第一个冒号替换为斜杠,让路径部分以斜杠开头。

代码示例

string gitSshUrl = "git@github.com:user/project.git";
// 找到@之后的第一个冒号位置
int colonPosition = gitSshUrl.IndexOf(':', gitSshUrl.IndexOf('@') + 1);
// 构建标准SSH URI字符串
string standardSshUri = $"ssh://{gitSshUrl.Substring(0, colonPosition)}/{gitSshUrl.Substring(colonPosition + 1)}";
// 创建Uri实例
Uri siteUri = new Uri(standardSshUri);

直接使用标准格式

如果已经明确目标URL,直接用标准SSH URI格式创建实例即可:

Uri siteUri = new Uri("ssh://git@github.com/user/project.git");

补充说明

标准SSH URI的格式为ssh://[user@]host[:port]/path,其中冒号仅用于指定数字端口。Git的简化写法将路径前的斜杠替换为冒号,这是Git特有的语法,不符合URI通用规范,因此无法被Uri类直接解析。

内容的提问来源于stack exchange,提问作者uenz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 06:24:55