Castle Einschienen in Asp.NET Website?
-
28-09-2019 - |
Frage
In unserem System den meisten Code in einer asp.net ist (2.0) Website, entdeckte ich Castle Einschienen vor ein paar Monaten und ich denke, es ist wirklich einfacher zu benutzen als asp.net / Webforms.
Hier ist, was wir brauchen: - Verwenden Sie Castle Einschienen - Unser Code muss auf der Website sein (mein Chef ist eine Art der alten Schule Web-Entwickler, so dass er es vorziehen, einige „.cs“ Dateien als eine „.dll“ zu haben). - Wir haben die vorhandenen webforms Code halten
Also vielleicht, wenn Sie ein Tutorial oder so ähnlich haben (ich fand eine Menge Tutorial über asp.net MVC und Schloss Einschienenbahn aber ich habe jede mit asp.net 2.0 finden) /
Merci les collegues
Lösung
So ist es ziemlich einfach (15 min oben) war:
1 / Holen Sie sich das Element, dass Sie von web.config benötigen: - Konfigurationsabschnittshandler
<section name="monorail" type="Castle.MonoRail.Framework.Configuration.MonoRailSectionHandler, Castle.MonoRail.Framework" />
-Konfiguration selbst
<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" ist der Name der Website Montage.
-http Handler
<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 Module
<add name="monorail" type="Castle.MonoRail.Framework.EngineContextModule, Castle.MonoRail.Framework" />
2 / Nehmen Sie die DLL, die Sie benötigen, in meinem Fall (ich verwende Active nicht wichtig):
Castle.Components.Binder.dll
Castle.Components.Common.EmailSender.dll
Castle.Components.Common.TemplateEngine.dll
Castle.Components.Common.TemplateEngine.NVelocityTemplateEngine.dll
Castle.Components.Validator.dll
Castle.Core.dll
Castle.MonoRail.Framework.dll
Castle.MonoRail.Framework.Views.NVelocity.dll
Castle.MonoRail.ViewComponents.dll
3 / Fügen Sie eine Klasse in Ihrem Ordner App_Code (zum Beispiel TestMonorailController):
mit Castle.MonoRail.Framework;
public class TestMonorailController : SmartDispatcherController
{
public TestMonorailController()
{
}
public void OnePage()
{
PropertyBag["toto"] = "TEST";
}
}
4 / A Views Ordner in der Wurzel Ihrer Website hinzufügen 5 / einen TestMonorail Ordner in dem Ordner hinzufügen Sie gerade erstellt 6 / Fügen Sie einen Dateinamen "OnePage.vm" in diesem Ordner:
$toto
7 / Test Ihrer Website:
http: // localhost: XX / yourwebsite / TestMonorail / OnePage.rails
und Sie sollten sehen
"TEST"
Et voila :) Ich kann meinen Produktionscode bearbeiten. Thx Ken
Andere Tipps
Ich denke, dass Sie die Controller-Klassen in App_Code setzen konnten und mit ihm getan werden. Sie benötigen eine spezielle Erweiterung für Einschienen Urls abzubilden. Wenn Sie SOAP-Webservices (.asmx) nicht verwenden Sie dann die Landkarte Erweiterung Einschienen der HttpHandlerFactory.
Ein interessanter Täter könnte sein, dass die tatsächliche App_Code Dateien Baugruppe enthält keinen schönen Namen (glaube ich) und Monorail braucht die Montage zu wissen, von dem Controller-Klassen zu finden.
Ich würde vorschlagen, dass Sie mit den Hinweisen spiele ich aufgelistet habe oben und sehen, wo es Sie bekommt. Teilen Sie die Ausnahmen, die Sie sehen und hoffentlich werden wir auf den Grund gehen bald