WCF работает приложением, но не сервисом

JavaScript, в отличие от PHP, имеет очень строгое поведение для массивов, так как они всегда численно индексируются.

В вашем коде у вас есть:

let todoItem = []
todoItem['modified'] = $("#modified_" + i).val();

Это недопустимо, потому что у вас есть массив, но вы пытаетесь использовать его как объект. Это просто создаст пользовательские свойства объекта массива, но на самом деле ничего не добавит к базовому массиву. Это должно быть видно в консоли, где ваш todosList массив представляет собой массив из 3 массивов длины 0.

Вы можете заставить это работать, сделав:

let todosList = [];
for (let i = 0; i < todos_count; i++) {
    let todoItem = {
        modified: $("#modified_" + i).val(),
        todo_text: $("#todo_text_" + i).val(),
        todo_priority: $("#todo_priority_" + i).val(),
        todo_completed: $("#todo_completed_" + i).val()
    }; //Object initialiser
    todosList.push(todoItem);
}

Остальная часть кода должна работать как есть

5
задан Cœur 21 November 2019 в 12:41
поделиться

6 ответов

Вы могли отправить остальную часть Вашего кода для хостинга сервиса?

Ваш класс, который запускает сервис, должен наследоваться "ServiceBase" и должен реализовать "OnStart" и методы "OnStop". Эти методы вызываются сервисной консолью, чтобы запустить и остановить сервисный процесс, таким образом, Ваш ServiceHost должен быть открыт/закрыт в этих методах. Просто задавшись вопросом, не делаете ли, возможно, Вы этого.

2
ответ дан 15 December 2019 в 06:35
поделиться

Какая учетная запись услуга работает как? Интересно, не удается ли сервису запуститься, вероятно, из-за не наличия полномочий открыть порт.

Попытайтесь выполнить сервис в своих собственных идентификационных данных (но как услуга). Если это работает, это - проблема полномочий. Наиболее вероятными являются полномочия HTTP.SYS.

Для присвоения доступа Вы используете netsh на перспективе/окне 7, или httpcfg на xp.

1
ответ дан 15 December 2019 в 06:35
поделиться

Если бы Вы находитесь на той же машине, я предложил бы использовать NetNamedPipeBinding вместо WSHttpBinding. Это быстрее. Можно всегда возвращаться к ws-http при необходимости в использовании перекрестной машины в будущем.

Удостоверьтесь, что Ваша услуга на самом деле работает через TaskManager. В противном случае поместите Отладчик. Повреждение () оператор в конструкторе Вашего сервиса и шаге до находки, где этому не удается запуститься. Вот краткое пошаговое для создания сервиса Windows NT в C# (при необходимости в нем).

0
ответ дан 15 December 2019 в 06:35
поделиться

Где Вы брали код, из которого создает сервисный хост? Мое предположение кулака было бы то, что, когда Вы выполняете его как услуга Вы или не создаете ServiceHost, или Вы не сохраняете ссылку на него (таким образом, это собрано "мусор"),

0
ответ дан 15 December 2019 в 06:35
поделиться

Ничто в конечном счете не регистрируется об отказе зарегистрировать адрес?

Вы пытались отладить сервис (использующий присоединение Visual Studio к процессу)?

0
ответ дан 15 December 2019 в 06:35
поделиться

Вы проверили, что Вам определили ту конфигурацию в файлах конфигурации и для приложения WinForms и для сервиса?

0
ответ дан 15 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: