У меня есть простой класс, который содержит некоторую общую информацию о текущем веб-сайте: -
public class WebSiteSettings
{
public EnvironmentType Environment { get; set } // Eg. Production
public VersionType Version { get; set; } // Eg. Version2
public string ApiKey { get; set; } // Eg. ABCDE-1234
}
Теперь я хочу иметь следующий маршрут: -
// Api - Search methods.
routes.MapRoute(
"Search Methods",
"{versionDate}/{controller}/{action}"
);
и вот пример URL:
http://localhost.api.mydomain.com:1234/2010-01-23/search/posts?user=JonSkeet&apikey=ABCDE-1234
В настоящее время я занимаюсь извлечением apikey через пользовательский ActionFilter
. Это Кьюл. Но я не уверен, как я могу извлечь versiondate
(т.е.
Сначала я думал о том, чтобы сделать это:
public abstract class AbstractController : Controller
{
protected WebSiteSettings WebSiteSettings { get; set; }
protected AbstractController() : base()
{
WebSiteSettings = new WebSiteSettings();
// 1. Read in the version data and figure out the version number.
// 2. Read in the app settings to figure out the environment. (easy to do).
// 3. No api key just yet. this will be handled in the OnAuthorization action filter.
}
}
public class SearchController : AbstractController
{
public ActionResult Posts(..)
{ // ... blah ... }
}
Итак, я попробовал это, и RouteData был нулевым, в абстрактном контроллере. Фактически, большая часть информации в абстрактном контроллере была нулевой.
Так что я не уверен, когда нужно читать эти значения и создавать этот класс.
У кого-нибудь есть идея?