2017-01-31 22 views
0

Confluenceページを更新しようとしています。 私はlocalhostののConfluence にこれを使用することができたが、私は本番サーバー上でそれをしようとしたとき、私はこのエラーを得た:C#を使用してConfluenceページを更新する405エラーが発生する

StatusCode: 405, ReasonPhrase: 'Method Not Allowed', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: 
{ 
    Vary: Accept-Encoding 
    Date: Tue, 31 Jan 2017 21:29:44 GMT 
    Server: Apache/2.2.15 
    Server: (CentOS) 
    Content-Length: 342 
    Allow: GET 
    Allow: HEAD 
    Allow: POST 
    Allow: OPTIONS 
    Allow: TRACE 
    Content-Type: text/html; charset=iso-8859-1 
} 

これは私のコードです。この問題の原因は何でしょうか?

string json = "{\"version\":{\"number\":4},\"title\":\"Bloomberg Test\",\"type\":\"page\",\"body\":{\"storage\":{\"value\":\"Hello World\",\"representation\": \"storage\"}}}";  
string userpass = username+":"+password; 
string encoded = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(userpass)); 
string encval = "Basic " + encoded; 
var content = new StringContent(json, Encoding.UTF8, "application/json"); 
HttpClient client = new HttpClient(); 
client.DefaultRequestHeaders.Add("X-Atlassian-Token", "nocheck"); 
client.DefaultRequestHeaders.Add("Authorization", encval); 
client.DefaultRequestHeaders.Add("Accept", "application/json"); 
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 
client.BaseAddress = new Uri(baseurl); 
var resp = client.PutAsync(@"/rest/api/content/"+pageid, content); 

答えて

1

405 HTTPメソッドが(PUT、POSTをGET ...)許可されていないことを意味します。

私は合流の詳細を知っているが、あなたはclient.PutAsync()経由で入れてHTTPを実行しているPOST要求

var resp = client.PostAsync(@"/rest/api/content/"+pageid, content); 
+0

問題:Confluenceのドキュメントによると:[link](https://docs.atlassian.com/confluence/REST/latest/) 更新はPUTリクエストを使用して行われ、新しいコンテンツの作成はPOSTを使用して行われます。 –

0

を使用しないでください。これはおそらくローカルで許可されていますが、サーバー上では許可されていません。応答がさえ許さHTTPメソッドが含まれます。

を許可:GET 許可:HEAD は許可:POST は許可:許可 OPTIONS:提案PostAsync()が合流によってサポートされていない場合

だから、サーバーを調整するTRACE PUTメソッドも使用できます。置き換え

+0

解決済み!回答いただきありがとうございます。 これは愚かなものでした。私が交換さ: 'client.BaseAddress =新しいウリ(BASEURL);' で: 'VAR RESP = client.PutAsync(BASEURL + "/休憩/ API /コンテンツ/" + pageidに、コンテンツ);' 私の推測で、 BaseAddressは、最後に何かを追加するような何かを追加しています。 –

0

:付き

client.BaseAddress = new Uri(baseurl); 
var resp = client.PutAsync(@"/rest/api/content/"+pageid, content); 

var resp = client.PutAsync(baseurl+"/rest/api/content/"+pageid, content); 

私の推測で、BASEADDRESSは終わりか何かにスラッシュを追加するような奇妙な何かをやっています。

今すぐ動作します!

関連する問題