Sharepoint 2013 Online でカスタマー ポータルを実装しているクライアントがいます。現在のプログラムでは、文書を郵送で顧客に配布しています。ここで、ドキュメントをカスタマー ポータルにアップロードする必要があります。
sharepoint で copy webservice を使用しようとしています。テスト プロジェクトを作成し、Web サービスを Web 参照として追加し、次のテストコードを記述しました。
static void Main(string[] args)
{
string baseUrl = "https://mycustomer.sharepoint.com/sites/";
string customer = "customerportalname";
string serviceUrl = "/_vti_bin/copy.asmx";
string destinationDirectory = "/folder/";
string fileName = "uploaded.xml";
string username = "username@outlook.com";
string password = "password";
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml("<fiets><onderdeel>voorwiel</onderdeel><onderdeel>achterwiel</onderdeel><onderdeel>trappers</onderdeel><onderdeel>stuur</onderdeel><onderdeel>frame</onderdeel></fiets>");
byte[] xmlByteArray;
using (MemoryStream memoryStream = new MemoryStream())
{
xmlDocument.Save(memoryStream);
xmlByteArray = memoryStream.ToArray();
}
string destinationUrl = string.Format("{0}{1}{2}{3}", baseUrl, customer, destinationDirectory, fileName);
string[] destinationUrlArray = new string[] { destinationUrl };
FieldInformation fieldInfo = new FieldInformation();
FieldInformation[] fields = { fieldInfo };
CopyResult[] resultsArray;
using (Copy copyService = new Copy())
{
copyService.PreAuthenticate = true;
copyService.Credentials = new NetworkCredential(username, password);
copyService.Url = string.Format("{0}{1}", baseUrl, serviceUrl);
copyService.Timeout = 600000;
uint documentId = copyService.CopyIntoItems(destinationUrl , destinationUrlArray, fields, xmlByteArray, out resultsArray);
}
}
コードを実行すると、次のエラーが表示されます。
The request failed with the error message:
--
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/_forms/default.aspx?ReturnUrl=%2f_vti_bin%2fcopy.asmx">here</a>.</h2>
</body></html>
--
私は認証されておらず、リダイレクトされているようです。ただし、資格情報は正しいです。誰にもアイデアはありますか?前もって感謝します!
アップデート
SharePoint 2013 Online に接続できるようにするには、この投稿で説明されているように、Office 365 認証 Cookie を添付する必要があります。ただし、私の問題は、ADFS も関与していることです。ADFS に対して認証するにはどうすればよいですか?