Azure DevOps:找不到 WikiHttpClient 的 Wiki 页面
Azure DevOps: Wiki page with WikiHttpClient not found
我在 Azure DevOps
中创建了一个项目 wiki,并希望在我的 .NET 应用程序中获取 wiki 降价页面。当使用 link
https://dev.azure.com/company/project/_apis/wiki/wikis/KIS.wiki/pages/News
Markdown 显示在浏览器中。当我尝试在代码中这样做时,我得到
"Wiki page ‘/News/_apis/connectionData’ could not be found. Ensure that the path of the page is correct and the page exists."
我的代码如下所示:
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() 出现错误。
我做错了什么?
我发现您尝试获取页面内容的方式存在一些问题。
- 给连接的url应该是"project base path"
private static string BasePath = $"https://dev.azure.com/{Organization}";
- 当您想使用
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。它并不详尽,但会有所帮助。
我在 Azure DevOps
中创建了一个项目 wiki,并希望在我的 .NET 应用程序中获取 wiki 降价页面。当使用 link
https://dev.azure.com/company/project/_apis/wiki/wikis/KIS.wiki/pages/News
Markdown 显示在浏览器中。当我尝试在代码中这样做时,我得到
"Wiki page ‘/News/_apis/connectionData’ could not be found. Ensure that the path of the page is correct and the page exists."
我的代码如下所示:
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() 出现错误。
我做错了什么?
我发现您尝试获取页面内容的方式存在一些问题。
- 给连接的url应该是"project base path"
private static string BasePath = $"https://dev.azure.com/{Organization}";
- 当您想使用
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。它并不详尽,但会有所帮助。