Редактировать: следующее даст путь к сборке с контроллером и имя типа класса с действием контроллера. Может быть, комбинация из них даст вам то, что вы ищете, Аарон?
string assemblyPath = Assembly.GetExecutingAssembly().CodeBase;
string typeName = this.GetType().FullName;
Они дают, например, что-то вроде
file:///C:/Projects/TestApp/TestApp.UI/bin/TestApp.UI.DLL
TestApp.UI.Controllers.TestController
При условии, что вы размещаете и называете контроллеры «стандартными» способами ASP.NET MVC, определенная комбинация вышеперечисленного может дать вам правильный полный путь к файлу C #:
C:/Projects/TestApp/TestApp.UI/Controllers/TestController.cs
или относительный путь:
Controllers/TestController.cs
Следующее даст маршрут к действию контроллера:
1) string path = Request.Url.AbsolutePath
2) string appPath = Request.ApplicationPath;
string absPath = Request.Url.AbsolutePath;
string path = appPath.Length <= 1 ?
absPath : absPath.Replace(appPath, "");
Пример запроса на действие Index у TestController (http://localhost:50027/Test/Index): Вышеуказанное возвращает
1) /Test/Index
2) /Test/Index
Для веб-сайта с базовым URL-адресом http://localhost:50027/blog, пример запроса для действия IndexController's Index (http://localhost:50027/blog/Test/Index): Вышеуказанное возвращает
1) /blog/Test/Index
2) /Test/Index