Служба WCF, работающая под пользовательским удостоверением, сбрасывает соединение для XSD WSDL, включает
У меня есть требования для настройки IIS 6 для размещения службы WCF, нацеленной на.NET Framework 4.0, с использованием настраиваемого удостоверения для рабочего процесса. Идентификационная запись - это строго ограниченная учетная запись домена, которая используется для идентификации и управления разрешениями для всей экосистемы служб, которые взаимодействуют в одном бизнес-процессе.
Я запустил aspnet_regiis.exe с флагом -ga, чтобы предоставить разрешения на удостоверение соответствующим расположениям ASP.NET в среде сервера и добавить его в группу IIS_WPG. По большей части, кажется, все работает относительно хорошо... за исключением автоматически сгенерированных спецификаций WSDL. Доступ к спецификации WSDL верхнего уровня работает нормально (то есть path.to/MyService.svc?wsdl), но IIS 6 сбрасывает соединение перед возвратом ответа для включений WSDL (т.е. path.to/MyService.svc?xsd=xsd0, так далее). Это происходит как при доступе через петлю на сервере, так и через публичный IP. Это не происходит при повторной настройке пула приложений для запуска под учетной записью сетевой службы по умолчанию.
Я не нашел никакой документации по этой конкретной проблеме, но я не первый раз сталкиваюсь с трудностями, связанными с тем, что некоторые компоненты.NET Framework работают не совсем корректно, когда рабочий процесс IIS 6 выполняется под пользовательским идентификатором домена. Я не настроил никаких специальных привилегий в локальной политике безопасности для этой учетной записи, кроме предварительно настроенного разрешения для членов IIS_WPG на вход в систему как пакетное задание. Чего мне не хватает, чтобы рабочий работал правильно?
РЕДАКТИРОВАТЬ:
Средство просмотра событий не содержит ошибок, а журналы IIS показывают, что сервер отвечает на запрос 200 OK, но полное значение состояния 200 0 64
с указанием кода состояния Win32 64.
Дамп, который я получаю по этой ошибке от net helpmsg 64
как следует:
Указанное имя сети больше не доступно.
Ответы от различных организаций приведены ниже:
- Chrome: ошибка 101 (net::ERR_CONNECTION_RESET): соединение было сброшено
- Firefox: соединение с сервером было сброшено во время загрузки страницы
- Eclipse / Java: java.net.SocketException: сброс подключения
РЕДАКТИРОВАТЬ:
Ведение журнала службы (предоставлено BNL) создало следующий дамп исключения:
System.InvalidOperationException: невозможно создать временный класс (результат =1). ошибка CS2001: не найден исходный файл "C:\WINDOWS\TEMP\vxmgwmnl.0.cs". Ошибка CS2008: входы не указаны.
в System.Xml.Serialization.Compiler.Compile(родительский объект сборки, строка, нс, XmlSerializerCompilerParameters xmlParameters, доказательство доказательства) в System.Xml.Serialization.TempAssembly.GenerateAssembly(типы XmlMapping[] xmlMappings, Type[], свидетельство типа String defaultNamespace, доказательство String defaultNamespace, Параметры XmlSerializerCompilerParameters, Сборка сборки, Сборки Hashtable) в System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Типы Type [], Строка defaultNamespace, Расположение строки, Доказательство) в System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace) в System.Xml.Schema.XmlSchema. Write(писатель XmlWriter, XmlNamespaceManager namespaceManager) в System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.XmlService.hanScriptWhan.Exchange. Wizard.Exchange. Wizard.Exchange. Wizard. Wizard. Wizard.dll (Message.OnWriteMessage (писатель XmlDictionaryWriter) в System.ServiceModel.Channels.BufferedMessageWriter. WriteMessage (сообщение сообщения, BufferManager bufferManager, Int32 initialOffset, Int32 maxSizeQuota) в System.ServiceModel.Channels.TextMessageEncoderFactory.TextMessageEncoder.WriteMessage(сообщение Message, сообщение системного сообщения BufferManagerManagerTanager.Office.Sec) с ошибкой..ServiceModel.Channels.HttpOutput.Send (тайм-аут TimeSpan) в System.ServiceModel.Channels.HttpRequestContext.OnReply(сообщение-сообщение, тайм-аут TimeSpan) в сообщении System.ServiceModel.Channels.RequestContextBase.RodeerStime-time-time (.Dispatcher.ImmutableDispatchRuntime.Reply(MessageRpc & rpc)
1 ответ
Используя рекомендации из статьи Microsoft KB, появляется сообщение об ошибке, когда ASP.NET 2.0 настроен для работы с учетной записью пользователя: "Невозможно создать временный класс", я обнаружил каталог C:\Windows\Temp и по праву проверил свойства его папки. -нажать и выбрать свойства. Затем я перешел на вкладку " Безопасность " и нажал " Дополнительно", затем " Добавить". Я ввел имя группы IIS_WPG на локальном компьютере и разрешил ему только специальное разрешение Список папок / Чтение данных. Это теперь решило проблему.