感謝本·米爾斯,這讓我開始與我自己的問題。但是,我發現我不必做2,3或4,通過以下操作。
Uri uri = new Uri(MyStringUrl);
var absoluteUri = uri.Scheme + "://" + uri.Authority + uri.AbsolutePath;
var query = string.IsNullOrWhiteSpace(uri.Query) ? null : uri.Query.Substring(1);
var request = new HttpRequest(null, absoluteUri, query);
訪問字符串書寫器很重要。
var sw = new StringWriter();
var response = new HttpResponse(sw);
var context = new HttpContext(request, response);
var contextBase = new HttpContextWrapper(context);
var routeData = System.Web.Routing.RouteTable.Routes.GetRouteData(contextBase);
如果我們將RouteData分配給請求上下文,我們可以按照預期使用MVC流水線。
request.RequestContext.RouteData = routeData;
var controllerName = routeData.GetRequiredString("controller");
var factory = ControllerBuilder.Current.GetControllerFactory();
var contoller = factory.CreateController(request.RequestContext, controllerName);
controller.Execute(request.RequestContext);
var viewResult = sw.ToString(); // this is our view result.
factory.ReleaseController(controller);
sw.Dispose();
我希望這可以幫助別人想要實現類似的事情。
你好嗎*運行*這些網址? –
我只是說我的輸入是一個字符串URL,我想要傳入MVC管道,並在調用操作方法後提取ActionResult。這些URL在您的MVC應用程序中是 –
。我的意思是你試圖在同一個應用程序中運行這些網址。 – Sunny