2009-06-09 5 views
4

어떻게 wiki 페이지를 만들고 제목을 추가 할 것인가? (webservices를 통해) sharepoint의 일부 내용을 추가 할 수 있습니까?프로그래밍 방식으로 Sharepoint에서 wiki 페이지 (= item)를 만드는 방법은 무엇입니까?

이 지금까지 내 SOAP 메시지입니다 :

<soapenv:Body> 
    <soap:UpdateListItems> 

    <soap:listName>Cooking Wiki</soap:listName> 

    <soap:updates> 
    <Batch OnError="Continue"> 
     <Method ID="1" Cmd="New"> 
     <Field Name="WikiField">Mix two eggs and a cup of milk.</Field> 
     </Method> 
    </Batch> 
    </soap:updates> 

    </soap:UpdateListItems> 
    </soapenv:Body> 

그것은 새로운 페이지를 생성하지만 아무 내용도없고 제목이 없습니다.

+1

SharePoint 서버에서 고유 한 웹 서비스를 만들 수있는 권한이 있습니까? 그렇다면 위키 페이지를 만드는 전체 SharePoint 개체 모델에 액세스 할 수 있습니다. 이것이 실제로 당신을위한 옵션이라면 나는 약간의 샘플 코드를 자필로 쓸 수있을 것이다. –

+0

슬프게도 솔루션은 제네릭 Sharepoint 서버에서 작동해야하기 때문에 내 웹 서비스를 작성하는 옵션이 아닙니다. – Stefan

답변

4

SharePoint Manager 사본을 가져 와서 흥미로운 정보를 보여줄 수 있습니다.

이름 필드 (".aspx"포함)가 필요합니다. 제목 필드는 wiki (관련 없음)와 관련이 없으며 대신 페이지의 이름이 색인됩니다. copy.asmx를 사용

--update--

은 새 문서를 업로드 할 수 있습니다. 템플릿 페이지는 이전에 다운로드 된 페이지입니다 (정보는 저장되지 않으며 레이아웃 페이지와 동일합니다).

private byte[] GetTemplatePage() 
{ 
    FileStream fs = new FileStream("templatePage.aspx", FileMode.Open); 
    byte[] fileContents = new byte[(int)fs.Length]; 
    fs.Read(fileContents, 0, (int)fs.Length); 

    fs.Close(); 
    return fileContents; 
} 

private void UploadDoc(string pageName) 
{ 
    byte[] wikiBytes = GetTemplatePage(); 

    string dest = "http://[website]/wiki/Wiki%20Pages/" + pageName + ".aspx"; 
    string[] destinationUrlArray = new string[] { dest }; 

    IntranetCopy.Copy copyService = new IntranetCopy.Copy(); 
    copyService.UseDefaultCredentials = true; 
    copyService.Url = "http://[website]/wiki/_vti_bin/copy.asmx"; 

    IntranetCopy.FieldInformation fieldInfo = new IntranetCopy.FieldInformation(); 
    IntranetCopy.FieldInformation[] fields = { fieldInfo }; 

    IntranetCopy.CopyResult[] resultsArray; 
    copyService.Timeout = 600000; 

    uint documentId = copyService.CopyIntoItems(dest, destinationUrlArray, fields, wikiBytes, out resultsArray); 

} 

그런 다음 lists.asmx를 호출하여 wikifield를 업데이트 할 수 있습니다. 참고 : webservices를 사용하여 문서를 업로드 한 후에는 문서의 이름을 바꾸는 방법을 모릅니다. 이 페이지 출력

+0

저는 Sharepoint Manager를 이미 설치했고 거의 모든 속성을 시도했습니다. 해결책이 없습니다. :-( – Stefan

+1

그래, wiki가 문서 라이브러리의 아주 특별한 경우 인 것 같아 . – Nat

1

댄 겨울 내가 여기에서 살펴보고, 몇 가지 샘플 코드를 제공 할 수 있다고 생각 환상적인 응용 프로그램을 작성 자세한 내용은 read his comprehensive blog posts을 참조하십시오.

+0

감사합니다. SOAP 호출에서 무슨 일이 벌어지고 있는지 이해하기 위해 이미 사용했습니다. – Stefan

1

다른 기능이 없으면이 기능을 제공하기 위해 자체 웹 서비스를 개발해야합니다. 기본적으로 제공되는 옵션은 기능면에서 제한적이지만, 사용자가 추가하는 것을 막을 수있는 방법은 없습니다.

웹 서비스 코드에 Nat's solution을 입력합니다.

+0

슬프게도 내 웹 서비스를 작성하는 옵션이 아닙니다. 솔루션은 일반 Sharepoint 서버에서 작동해야합니다. – Stefan

관련 문제