Использование SPSite из 32-битного приложения для доступа к 64-битной версии SharePoint - PullRequest
3 голосов
/ 30 октября 2008

Я создал пакетное задание, работающее в 32-битном режиме, так как оно использует 32-битные объекты COM, необходимо подключиться к SharePoint, чтобы внести изменения в список. Он работает в моей среде разработки, поскольку он полностью 32-битный. Но в моей тестовой и производственной среде мы используем 64-битную версию SharePoint, и вот что я получаю от SPSite:

System.IO.FileNotFoundException: 
  The Web application at http://<my sp host>/ could not be found. 
  Verify that you have typed the URL correctly. 
  If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application.

at Microsoft.SharePoint.SPSite..ctor(SPFarm farm, Uri req...

это то, что я делаю

        using (SPSite site = new SPSite(_url))
        {
            using (SPWeb web = site.OpenWeb())
            {
                try
                {
                    SPList list = web.Lists[new Guid(_listID)];
                    SPListItem item = list.GetItemById(id);
                    item[field] = value;
                    item.SystemUpdate(false);
                }
                catch (Exception x)
                {
                    log.Error(x);
                }
            }
        }

Ответы [ 2 ]

6 голосов
/ 05 ноября 2008

Вам просто нужно запустить пакетное задание в 64-битном процессе. Проблема в том, что в SharePoint есть много COM-объектов, которые скомпилированы для 64-битной среды в вашей тестовой и производственной среде. Объекты SPSite и SPWeb фактически обертывают объекты COM, поэтому они терпят неудачу в вашем 32-битном процессе.

Одним из решений может быть взаимодействие с SharePoint через его веб-службы вместо объектной модели.

1 голос
/ 30 октября 2008

Я не думаю, что это 32/64-битная проблема, поскольку я нахожусь в той же ситуации, что и разработка на 32-битной и развертывание на 64-битной. (На самом деле мы используем 32-битные и 64-битные WFE'ы)

Поскольку исключение выдается из конструктора SPSite, я хотел бы дополнительно изучить вопрос о том, действительно ли машина, на которой вы запускаете код (поле SP), распознает этот URL.

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