Monorail Castle в веб-сайте ASP.NET?
-
28-09-2019 - |
Вопрос
В нашей системе большая часть кода находится в веб-сайте ASP.NET (2.0), я обнаружил Monorail Castle в несколько месяцев назад, и я думаю, что это действительно проще в использовании, чем ASP.NET / WebForms.
Вот что нам нужно: - Использовать монорелью замка - наш код должен быть на сайте (мой шеф - это своего рода веб-разработчик Old School, поэтому он предпочитает иметь некоторые файлы «.cs», чем один «.dll»). - Мы должны сохранить существующий код WebForms
Так что, может быть, если у вас есть учебник или что-то в этом роде (я нашел много уроков по поводу монорельса ASP.NET MVC и Castle, но я нашел любой с ASP.NET 2.0) /
Merci Les Collegues.
Решение
Так что было довольно простым (15 мин. Топ):
1 / Получить элемент, который вам нужен в Web.config: - Обработчик раздела конфигурации
<section name="monorail" type="Castle.MonoRail.Framework.Configuration.MonoRailSectionHandler, Castle.MonoRail.Framework" />
Самоучка
<monorail>
<controllers>
<assembly>App_Code</assembly>
<assembly>Castle.Monorail.ViewComponents</assembly>
</controllers>
<viewEngines viewPathRoot="Views">
<add type="Castle.MonoRail.Framework.Views.NVelocity.NVelocityViewEngine, Castle.MonoRail.Framework.Views.NVelocity" />
</viewEngines>
</monorail>
«App_Code» - это имя сборки веб-сайта.
Http обработчики
<add verb="*" path="*.rails" type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory, Castle.MonoRail.Framework" />
<!--block direct user access to template files-->
<add verb="*" path="*.vm" type="System.Web.HttpForbiddenHandler" />
<add verb="*" path="*.boo" type="System.Web.HttpForbiddenHandler" />
<add verb="*" path="*.st" type="System.Web.HttpForbiddenHandler" />
-http модули
<add name="monorail" type="Castle.MonoRail.Framework.EngineContextModule, Castle.MonoRail.Framework" />
2 / Возьмите DLL, которые вам нужны, в моем случае (я не использую ActiveSerecord):
Castle.components.binder.dll.dll.dll
Castle.components.common.emailsender.dll.dll.dll
Castle.components.common.templateengine.dll.
Castle.components.common.templateengine.nvelocitytemplateEngine.dll.dll.dll.dll.
Castle.components.validator.dll.dll.
Castle.Core.dll.dll
Castle.MonoRoil.framework.dll.dll.
Castle.MonoRoil.framework.views.nvelocity.dll.dll.dll.
Castle.MonoRail.ViewComponents.dll.dll.
3 / Добавить класс в вашей папке App_Code (например, TestMonoSailController):
используя Castle.MonoRoil.framework;
public class TestMonorailController : SmartDispatcherController
{
public TestMonorailController()
{
}
public void OnePage()
{
PropertyBag["toto"] = "TEST";
}
}
4 / Добавьте папку Views в корне вашего сайта 5 / Добавить папку TestMonoRail в папке, которую вы только что создали 6 / Добавить файл «OnePage.VM» в этой папке:
$toto
7 / Проверьте свой веб-сайт:
http: // localhost: xx / yourwebsite / testmonoirail / onepage.reails
и вы должны увидеть
"ТЕСТОВОЕ ЗАДАНИЕ"
ET VOILA :) Я могу редактировать мой код производства. Thx Ken.
Другие советы
Я думаю, что вы можете поставить классы контроллера в App_Code и выполнять с ним. Вам нужно будет сопоставить специальное расширение для URL Monorail. Если вы не используете SOAP WebServices (.asmx), то составьте это расширение в Httphandlerfactory Monorail.
Интересный виновник может заключаться в том, что фактическое собрание, содержащее файлы app_code, не имеет приятного имени (я думаю), и монорелью нужно знать сборку, из которой можно найти классы контроллера.
Я бы предложил вам сыграть с подсказками, которые я перечислил выше и посмотрите, куда это вас оно. Поделитесь исключениями, которые вы видите и надеюсь, мы доберемся до его в ближайшее время