2009-05-11 2 views
1

Я хотел бы сделать RESTful приложения из HttpHandlers без определения каждой конечной точки, сделав запись в web.config, я хотел бы стиль крепления атрибутов конструктора класса, например:Как определить конечную точку без web.config или httpModule?

public class obj : IHttpHandler 
{ 
    [WebGet(UriTemplate = "/accounts/{id}")] 
    public obj(string id) 
    { 
    // this is just an eg, it worild normally include caching and 
    // a template system 
    String html = File.ReadAllText("/accounts/accounts.htm"); 
    html.replace("id", id); 
    httpcontext.current.response.write(html) 
    } 
} 

вместо

<httpHandlers> 
     <clear /> 
     <add verb="GET" path="/accounts/*" type="MyApp.obj" /> 
</httphandlers> 

То, как я делаю это сейчас у меня есть 100 из конечных точек в web.config :(я предпочел бы определить их в классе. И я не хочу, чтобы сделать дополнительные файлы (.asmx). Я хотел бы приложение только .htm-файлов с токенами и .cs-файлами

Спасибо!

+0

рассмотреть возможность пересмотра фрагмента кода: «public call obj»? "public obj (string id)"? –

+0

Я рассматриваю revisin вопрос be: какой метод отвечает за разбор URL-адреса запроса и выбор того, какой httphandler должен создать экземпляр. – rizzle

ответ

1

Вы можете автоматизировать регистрацию конечных точек и т. Д. С помощью настраиваемого ServiceHost, который переопределяет метод ApplyConfiguration(), который затем виртуализирует конфигурацию, чтобы он не был в файле web.config.

Here's a starting point. Он не делает то, что вам нужно, но он иллюстрирует концепцию виртуализации конфигурации.

+0

Это похоже на путь, ServiceHostBase.AddServiceEndpoint Method (String, Binding, Uri) Спасибо! – rizzle

Смежные вопросы