Попытка выяснить, почему мой сервис WCF не работает - PullRequest
4 голосов
/ 04 мая 2011

Более года назад я работал над службой WCF, которую я написал с использованием VS 2008. Он работает под управлением службы Windows, которую я также написал.С тех пор он работает там.И, к сожалению, появились другие проекты / приоритеты, которые мешали мне продолжать этот проект до сих пор.

Теперь я пытаюсь вернуться к нему.Тем не менее, я пытаюсь выяснить, могу ли я использовать VS 2010 и .NET 4 вместо .NET 3.5.Я вызвал командную строку, чтобы запустить SvcUtil, чтобы получить информацию wsdl, которую я помещу в файл конфигурации для нового приложения WPF, которое я пытаюсь начать писать.Единственное, я получаю сообщение об ошибке: я не могу связаться с сервером и т. Д.

Итак, я скопировал файл .exe.config с сервера на мой компьютер, где я мог его отредактировать.с помощью SvcConfigEditor.Я внес эти изменения, поместил их обратно на сервер и получил ошибку при попытке запустить SvcUtil, но, что еще хуже, я не увидел файлы .svclog, которые я ожидал увидеть.Итак, я попал в приложение Службы сервера.Я нашел службу Windows, которую написал год назад;увидел, что он работает, и остановился и снова запустил его.

Теперь у меня другая проблема.Моя служба Windows запускается, но затем немедленно останавливается.Я получаю это сообщение о том, что служба была запущена, а затем остановлена, и о том, что иногда это происходит с различными видами служб, такими как журналы производительности и службы предупреждений.Я проверил журнал событий на сервере, и единственное, что там связано с этой службой Windows, - это то, что она вошла в состояние запуска, а затем вошла в состояние остановки.

Ах, после попытки запустить его 4 разаэто, наконец, дало мне ошибку в журнале событий!(Почему это не было сделано в первую очередь? И кто сказал, что попытки делать одно и то же снова и снова и ожидать разных результатов - признак безумия, когда явно первые 3 раза ничего не регистрировалосьв журнале событий, но с 4-й попытки это произошло.)

Вот ошибка:

Тип события: ошибка Источник события: Service1 Категория события: нет КОД события: 0 Дата: 04.05.2011 Время: 10:14:46 Пользователь: N / A Компьютер: HELIOS Описание: Невозможно запустить службу.System.TypeInitializationException: инициализатор типа для 'System.ServiceModel.DiagnosticUtility' вызвал исключение.---> System.Configuration.ConfigurationErrorsException: не удалось найти тип для класса System.Diagnostics.XmlWriterTraceListener, System, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089.в System.Diagnostics.TraceUtils.GetRuntimeObject (String className, Type baseType, String initializeData)

и вот новый раздел кода, помещенный в файл .config с помощью SvcConfigEditor:

<sharedListeners>
<add initializeData="C:\Program Files\ASIWindowsService\ASIWindowsService_tracelog.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
<add initializeData="C:\Program Files\ASIWindowsService\ASIWindowsService_messages.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>

1 Ответ

5 голосов
/ 04 мая 2011

На этот вопрос ответили в комментариях, но в Visual Studio 2010 я видел ошибку, которая могла привести к аналогичной ситуации.

Даже если целевая платформа установлена ​​на версию 3.xдля проекта WCF при использовании 2010 SvcConfigEditor автоматически вставляется «System.Diagnostics.XmlWriterTraceListener, System, Version = 4.0.0.0 ...», хотя должна быть вставлена ​​«System.Diagnostics.XmlWriterTraceListener, System, Version = 2.0.0.0... "Это укусит вас при развертывании измененного файла web.config в размещенной службе IIS, где AppPool не настроен для использования .NET 4.0 framework.Исправление - просто отредактируйте файл web.config обратно на «Version = 2.0.0.0».

...