Visual Studio'da SPA şablonunu kullanarak yeni bir proje oluşturuyorum. Amacım, sonunda modernleştirilecek/taşınacak bazı eski uygulamaları barındıracak/barındıracak bir Angular/SPA uygulamasına sahip olmak. Bu yüzden, SPA uygulamamdaki bir sayfada bir iframe var ve bir menü öğesi tıklandığında, bu iframe'deki eski ASP.NET uygulamalarından birini yüklemek istiyorum (bu, eski site olarak bir iframe içinde olmak zorundadır. onları kullandı ve mimarisi onlara dayanıyor. Yönlendirme hakkını elde etme konusunda sorun yaşıyorum.Karışık VS ortamında yönlendirme doğru şekilde işlenemiyor
public class DefaultRoute : Route
{
public DefaultRoute()
: base("{*path}", new DefaultRouteHandler()) {
this.RouteExistingFiles = true;
}
}
ve böyle "aspx" sayfa isteklerini, görmezden RouteConfig.cs dosyasını düzenledikten:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes) {
routes.Ignore("*.aspx");
routes.Add("Default", new DefaultRoute());
}
}
SPA şablon böyle bir defaultroute sınıfı (true RouteExistingFiles değiştirildi) tanımlar
tanımlanan varsayılan rota işleyicisi, şöyle görünür:
public class DefaultRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext) {
// Use cases:
// ~/ -> ~/views/index.cshtml
// ~/about -> ~/views/about.cshtml or ~/views/about/index.cshtml
// ~/views/about -> ~/views/about.cshtml
// ~/xxx -> ~/views/404.cshtml
var filePath = requestContext.HttpContext.Request.AppRelativeCurrentExecutionFilePath;
if (filePath == "~/") {
filePath = "~/views/index.cshtml";
}
else {
if (!filePath.StartsWith("~/views/", StringComparison.OrdinalIgnoreCase)) {
filePath = filePath.Insert(2, "views/");
}
if (!filePath.EndsWith(".cshtml", StringComparison.OrdinalIgnoreCase)) {
filePath = filePath += ".cshtml";
}
}
var handler = WebPageHttpHandler.CreateFromVirtualPath(filePath); // returns NULL if .cshtml file wasn't found
if (handler == null) {
requestContext.RouteData.DataTokens.Add("templateUrl", "/views/404");
handler = WebPageHttpHandler.CreateFromVirtualPath("~/views/404.cshtml");
}
else {
requestContext.RouteData.DataTokens.Add("templateUrl", filePath.Substring(1, filePath.Length - 8));
}
return handler;
}
}
dizin yapısı şu şekildedir:
MySpa
SPA < - ihtiva eder (.net 3.0) eski uygulamalar IIS
, I - SPA uygulaması (net 4,5)
Eski < içerir SPA uygulamasında bir sanal dizin (alt dizin) olarak ayarlanmış eski klasörü bulun.
Yönlendirmeyi, bir menü öğesi tıklatıldığında ve istek bir .aspx sayfası için istekte bulunulduğunda (sorgu dizesi bilgisine sahip bir URL içeren), isteği eski uygulamaya yönlendirilebilecek şekilde nasıl ayarlayabilirim? ?