Для тестирования множества головных болей, связанных с реализацией IIS/WCF с нуля, я создал службу HelloWorld, и клиент очень хорошо прошел ()здесь . Я добавил конечные точки для net.tcp, и служба работает правильно с конца -по конец -для обеих привязок подIIS 7.5
(в Windows 7 )в своем собственном ApplicationPool
под названием HW.
Я пытаюсь заставить работать анонсированные функции AutoStart и Preload (или «предварительного -теплого кэширования» ). Я следовал инструкциям, изложенным здесь и здесь (, очень похожими друг на друга, но всегда полезно иметь второе мнение )очень внимательно. Это означает, что я
1 )Устанавливаю пул приложений startMode
...
2 )... включен serviceAutoStart
и устанавливаю указатель на мойserviceAutoStartProvider
3 )... и назвал указанного провайдера с GetType().AssemblyQualifiedName
класса, полностью перечисленным ниже
using System;
namespace MyWCFServices
{
public class Preloader : System.Web.Hosting.IProcessHostPreloadClient
{
public void Preload(string[] parameters)
{
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\temp\PreloadTest.txt");
sw.WriteLine("Preload executed {0:G}", DateTime.Now);
sw.Close();
}
}
}
. Увы, вся эта ручная настройка, плюс пара вызовов iisreset
, и я ничего не получаю. Процесс w3wp.exe
не запускается в диспетчере задач (, хотя я получаю его, если запускаю HelloWorldClient ), нет текстового файла и, прежде всего, нет удовлетворения.
Ужасно скудное обсуждение этой функции, как на SO, так и в более широкой сети, и несколько подобных вопросов здесь получили мало внимания, и все они звонят в тревожный звоночек или два. Может быть, напрасно --кто-нибудь из экспертов, которые были на этой самой дороге раз или два, пожелает вмешаться? (Рад предложить полное решение, если вы можете предложить хорошее место для его размещения.)
РЕДАКТИРОВАТЬ:Я попытался сбросить этот путь в методе Preload
в относительную папку App_Data
(другой ответ SO предположил, что ), не имеет значения. Также,Я узнал, что процесс w3wp.exe
запускается при простом переходе на локальный хост. Процесс потребляет впечатляющие 17 МБ памяти для обслуживания своего единственного крошечного OperationContract, а по цене предлагает нулевое значение предварительной загрузки. 17 МБ ColdDeadCache.