У меня есть служба WCF, которая выполняет некоторые преобразования документов и возвращает документ вызывающей стороне. При локальной разработке на моем локальном сервере разработчика служба размещается на сервере разработки ASP.NET, консольное приложение вызывает операцию и выполняется в течение нескольких секунд.
Когда я размещаю службу в IIS через файл .svc, два документа работают правильно, третий вырывается, он начинает создавать документ Word с использованием OpenXml Sdk, но затем просто умирает. Я думаю, что это как-то связано с IIS, но я не могу указать на это.
Существует три типа документов, которые я генерирую. В двух словах, как это работает
SQL 2005 DB / IBM DB2 -> WCF Сервис, написанный другим разработчиком для предоставления данных. Эта служба имеет только одну конечную точку, использующую basicHttpBinding
Моя служба вызывает его службу, получает соответствующие данные, использует Open Xml Sdk для создания документа Microsoft Word, сохраняет его на сервере и возвращает путь пользователю.
Слово документов не превышает 100 КБ.
Я также использую basicHttpBinding, хотя я пробовал wsHttpBinding с теми же результатами.
Что удивительно, так это то, насколько быстро он работает локально, и даже более того, что два документа генерируются просто отлично, это третий тип документа, который отказывается работать.
К сообщению об ошибке:
Произошла ошибка при получении ответа HTTP на http://myservername.mydomain.inc/MyService/Service.Svc. Это может быть связано с тем, что привязка конечной точки службы не использует протокол HTTP. Это также может быть связано с тем, что сервер прерывает контекст HTTP-запроса (возможно, из-за выключения сервера). Более подробную информацию смотрите в журналах сервера.
Последние 2 дня я потратил, пытаясь выяснить, что происходит, я перепробовал все, в том числе изменил maxReceivedMessageSize, maxBufferSize, maxBufferPoolSize и т. Д. И т. Д. На большие значения, я даже включил:
<httpRuntime maxRequestLength="2097151" executionTimeout="120"/>
Чтобы узнать, может быть, IIS задыхался из-за этого.
Программно служба не делает ничего особенного, она просто создает документы Word из данных, используя Open Xml Sdk, и, как я уже сказал, локально все 3 документа работают при вызове через консольное приложение, работающее локально на сервере asp.net dev, т.е. http://localhost:3332/myService.svc
Когда я размещаю его в IIS и пытаюсь заставить приложение Windows Forms вызвать его, я получаю сообщение об ошибке.
Я знаю, что вы будете запрашивать журналы, так что да, у меня включена регистрация на моем хосте.
А в логах нет ошибок , я все регистрирую.
Обычно я вызываю две сервисные операции, написанные другим разработчиком.
MyOperation вызывает -> HisOperation1, а затем HisOperation2, оба этих вызова дают мне сложные типы. Я собираюсь посмотреть на его код завтра, потому что он использует LINQ2SQL, и там может происходить какое-то забавное дело. Он использует множество коллекций и т. Д., Но тот факт, что я могу запускать один и тот же документ, позволяет называть его «Документ 3» в течение нескольких секунд, когда служба размещается локально на сервере ASP WebDev, - это самое странное, с чего бы это бежать по сокращенной Кассини и взорвать IIS?
Судя по журналу, после вызова HisOperation1 и HisOperation2 служба просто переходит в режим ожидания, в журнале событий Windows возникает ошибка пула приложений (w3wp.exe).
Faulting application w3wp.exe, version 6.0.3790.1830, stamp 42435be1, faulting module kernel32.dll, version 5.2.3790.3311, stamp 49c5225e, debug? 0, fault address 0x00015dfa.
Он классифицируется как ошибка .NET 2.0 Runtime.
Любая помощь приветствуется, мне не хватает сна.
Помоги мне, Оби-Ван Кеноби, ты моя единственная надежда.