Я создал WebService с использованием платформы .NET 2.0, класса, основанного на интерфейсе с атрибутом WebServiceAttribute и размещающего его с использованием IIS и файла ASMX. В настоящее время WebService загружает свою конфигурацию из одного файла XML.
Я хотел бы создать несколько экземпляров этого сервиса, где каждый загружает свою конфигурацию.
Копируя файл ASMX, я могу создать клон веб-сервиса под другим именем, который будет основан на точно такой же реализации. Но он также загружает тот же самый файл конфигурации, что делает его довольно бесполезным.
Итак, мой вопрос: Каков наилучший способ создания произвольного числа веб-сервисов, основанных на одном классе, в одном виртуальном каталоге IIS, где каждый загружает свой файл конфигурации? *
Решение
С помощью ответа Павла Чучува я создал следующий код для обработки загрузки конфигурации:
public class WebConfigManager
{
public static T Load<T>() where T: new()
{
string location =
HttpContext.Current.Request.PhysicalPath + ".config";
if (HttpContext.Current.Cache[location] is T)
{
return (T)HttpContext.Current.Cache[location];
}
using (Stream s =
new FileStream(location, FileMode.Open, FileAccess.Read))
{
return (T)(HttpContext.Current.Cache[location] =
new XmlSerializer(typeof(T)).Deserialize(s));
}
}
}
// example of the usage of WebConfigManager
public class MyWebService : IMyWebService
{
Config config = WebConfigManager.Load<Config>();
...