Развертывание службы WCF на удаленном компьютере - PullRequest
1 голос
/ 10 мая 2011

У меня есть веб-сервис WCF, который я разместил в IIS на моем ПК.Это я добавил в качестве ссылки на службу в проекте Visual Studio и могу успешно вызвать его в веб-службе в этом проекте VS.

Теперь я пытаюсь развернуть эти веб-службы на удаленном ПК, которыйне установлен Visual Studio.Для этого я скопировал файлы .svc и web.config и папку bin этих веб-служб в папку на удаленном ПК.Затем я разместил службы в IIS, указывая на соответствующую папку.Теперь, когда я просматриваю веб-службу по ссылке .svc, я могу получить доступ к веб-службе с моего компьютера.Я добавил этот веб-сервис в качестве ссылки на сервис в моем проекте Visual Studio, и все выглядит хорошо, я могу видеть отдельные методы и их параметры в браузере объектов.Проблема возникает, когда я пытаюсь вызвать методы из этих веб-сервисов.Я могу вызвать один метод, а затем, когда я вызываю второй, я получаю следующую ошибку (Абсолютно тот же веб-сервис и все его методы отлично работают, если размещены в IIS на моем ПК.):

Ссылка на объект не установлена ​​для экземпляра объекта.

Вот часть метода, в котором я вызываю веб-службу (имя веб-службы - TFSWS):

public void ImportRequirements(string username, string password)
    {
        TFSWS.TFSWSClient obj = new TFSWS.TFSWSClient();
        string projects = obj.GetTFSProjects(username, password, TFS_URI);
        string list = obj.GetAllWorkItems(ProjectName2, username, password, TFS_URI, WItypes);

Вот код первого метода, который я могу успешно вызвать из TFSWS:

public string GetTFSProjects(string userName, string password, string Uri)
    {
        StringWriter MyStringWriter = new StringWriter();
        NetworkCredential cred = new NetworkCredential(userName, password);
        TfsTeamProjectCollection _tfs = new TfsTeamProjectCollection(new Uri(Uri), cred);
        _tfs.Authenticate();
        ICommonStructureService tfsProjectService = (ICommonStructureService)_tfs.GetService(typeof(ICommonStructureService));
        ProjectInfo[] projects = tfsProjectService.ListAllProjects();
        string[] proj = new string[projects.Length];
        for (int i = 0; i < projects.Length; i++)
        {
            proj[i] = projects[i].ToString();
        }
        DataTable ProjectsDT = GetDataTableFromArray(proj);
        ...
    }

Вот код второго метода, который я вызываю из TFSWS и который выдает сообщение об ошибке (КогдаЯ отлаживаю, я вижу, что все параметры назначены правильно):

public string GetAllWorkItems(string projectName, string username, string password, string URI, string[] WItypes)
    {
        StringWriter MyStringWriter = new StringWriter();
        NetworkCredential cred = new NetworkCredential(username, password);
        TfsTeamProjectCollection _tfs = new TfsTeamProjectCollection(new Uri(URI), cred);
        _tfs.Authenticate();
        WorkItemStore _witStore =(WorkItemStore)_tfs.GetService(typeof(WorkItemStore));
        DataTable myData = new DataTable();
        string project = projectName;
        string[] m_columns;
        Hashtable context = new Hashtable();
        Project proj = _witStore.Projects[project];
        }
        string myQuery = "SELECT [System.Id], [System.Title], [System.WorkItemType], [System.State] FROM WorkItems WHERE ...";
        WorkItemCollection result = _witStore.Query(myQuery, context);
        DisplayFieldList fieldList = result.Query.DisplayFieldList;
        ...
    }

1 Ответ

0 голосов
/ 10 мая 2011

Вы можете выполнить удаленную отладку, чтобы выяснить, с какой проблемой сталкивается код на целевой машине, без установки на нее всей Visual Studio.Вам просто нужно развернуть отладку вместо сборок режима выпуска и запустить на ней службу удаленного отладчика.

Настройка удаленной отладки

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