Загрузка файла Sharepoint - PullRequest
0 голосов
/ 16 августа 2010

У меня есть приложение Silverlight, которое загружает файлы на сайт Sharepoint.Я установил, что он работает для сайта Sharepoint в моем ящике и на сайте Sharepoint в чьем-либо ящике, где я захожу с помощью своей учетной записи Windows на этом сайте.Но я не могу загружать файлы на сайты Sharepoint, которые находятся в другом домене / используют другой логин.

Для загрузки файлов на сайты, которые не используют мою учетную запись.Я использую это, чтобы получить учетные данные и изменить конечные точки

CopySoapClient copy = new CopySoapClient();
copy.ClientCredentials.UserName.UserName = obj.UserName;
copy.ClientCredentials.UserName.Password = obj.Password;
copy.Endpoint.Address = new System.ServiceModel.EndpointAddress(newMaster.Url + "/_vti_bin/Copy.asmx");
copy.Endpoint.Contract.Name = "CopyReference.CopySoap";
copy.Endpoint.Binding.Name = "basicHttpBinding";
copy.Endpoint.Contract.ConfigurationName = "CopySoap";

, где obj.UserName также имеет имя_домена. Например.Домен \ UserName.

Ответы [ 2 ]

4 голосов
/ 16 августа 2010

Ниже приведен фрагмент кода, который я использовал в прошлом для загрузки документа в библиотеку документов SharePoint с помощью SDK веб-служб SharePoint.

var copyClient = new Copy();
copyClient .Credentials = credentials; // <-- Create Network Credentials

var siteUrl = "http://....";
var libraryName = "MyDocLibrary";
var localFilePath = "...";
var fileName = Path.GetFileName(localFilePath);
var destinationUrl = string.Format("{0}/{1}/{2}", siteUrl, libraryName, fileName);

var fileBytes = File.ReadAllBytes(localFilePath);
var info = new[]{new FieldInformation
                        {
                            DisplayName = fileName,
                            Id = Guid.NewGuid(),
                            InternalName = fileName,
                            Type = FieldType.File,
                            Value = fileName
                        }};

CopyResult[] results;
copyClient.CopyIntoItems(destinationUrl, new[] { destinationUrl }, info, fileBytes, out results);

FYI - этот прокси Copy созданиспользуя старую школу Добавить веб-ссылку вместо новой Добавить сервисную ссылку .Я считаю, что проще использовать прокси старой школы при работе со старыми веб-службами ASMX SharePoint.

, и если вам нужно динамически изменить URL-адрес конечной точки, вы можете использовать следующее до вызова метода CopyIntoItems().

var copyServiceUrl = string.Concat(siteUrl, "/_vti_bin/Copy.asmx");
copyClient.Url = copyServiceUrl;
0 голосов
/ 20 августа 2010

Я понял, что это работает по-другому.Я обнаружил, что сайт не был действительно аутентифицирован, когда я использовал элемент управления WebBrowser, чтобы перейти к той папке / папке с документами общего ресурса, куда я хотел загрузить.Поскольку я использую Silverlight, я не смог использовать это,

copy.ClientCredentials.Windows.ClientCredential.Domain.

, которое я мог бы использовать в приложениях ASP.Net для загрузки файлов.

Поэтому я вручную предложил пользователю ввестиучетные данные внутри элемента управления WebBrowser.Сейчас все работает нормально.Проблема заключалась в том, что я не смог передать учетные данные через домен или не смог указать домен из Silverlight.

PS: у меня были политики клиентского доступа и междоменный домен.Так что это не имеет к этому никакого отношения.(насколько я знаю).

Если бы я мог найти решение без этого обходного пути.Это будет высоко оценено.

Спасибо, Уоллес, за проявленный интерес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...