【问题标题】:Azure DevOps: Wiki page with WikiHttpClient not foundAzure DevOps:未找到带有 WikiHttpClient 的 Wiki 页面
【发布时间】:2019-12-26 19:33:20
【问题描述】:

我在 Azure DevOps 中创建了一个项目 wiki,并希望在我的 .NET 应用程序中获取 wiki markdown 页面。使用链接时

https://dev.azure.com/company/project/_apis/wiki/wikis/KIS.wiki/pages/News

markdown 显示在浏览器中。当我尝试在代码中这样做时,我得到了

“找不到Wiki页面‘/News/_apis/connectionData’。确保页面路径正确且页面存在。”

我的代码如下所示:

var url = new Uri("https://dev.azure.com/company/project/_apis/wiki/wikis/KIS.wiki/pages/News");
var personalAccessToken = "xxxxxxxxxxxxxxxx";
var credentials = new VssCredentials(new VssBasicCredential("", personalAccessToken));

using (var connection = new VssConnection(url, credentials))
{
    var wikiClient = connection.GetClient<WikiHttpClient>();
    var markdown = wikiClient.GetWikiAsync("KIS.wiki").Result;
}

GetClient() 上出现错误。

我做错了什么?

【问题讨论】:

    标签: c# azure-devops wiki


    【解决方案1】:

    我发现您尝试获取页面内容的方式存在一些问题。

    1. 给连接的 url 应该是“项目基本路径”
      private static string BasePath = $"https://dev.azure.com/{Organization}";
    2. 当您想使用GetPageAsync(...) 方法时,您正在使用GetWikiAsync(...) 方法

    这是一个例子

    private readonly IVssCredentialsFactory _credentialsFactory;
    
    private const string ApiVersion = "5.1";
    private static string BasePath = $"https://dev.azure.com/{Organization}";
    private const string Organization = "company";
    private const string Project = "project";
    
    public AzureRepository(IVssCredentialsFactory credentialsFactory)
    {
        _credentialsFactory = credentialsFactory;
    }
    
    public void GetWikiPage()
    {
        using (var connection = new VssConnection(new Uri(BasePath), _credentialsFactory.GetCredentials()))
        {
            var wikiClient = connection.GetClient<WikiHttpClient>();
            var wikiId = "KIS.wiki";
            var path = "/News";
            var page = wikiClient.GetPageAsync(Project, wikiId, path, includeContent : true).Result;
            var content = page.Page.Content;
        }
    }
    

    关于此示例的说明:

    • IVssCredentialsFactory 是我的创作,所以不要在库中寻找它
    • 工厂的注入是 PAT 或 oAuth 令牌,所以不要认为你在那里做错了什么。你不是。
    • 我希望很明显,该方法对结果没有任何作用,b/c 让我们面对现实吧,它只是一个示例。

    如果你还没有

    您应该查看c# client samples。它并不详尽,但可能会有所帮助。

    【讨论】:

    • 我没有看到基本网址是什么 - 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    相关资源
    最近更新 更多