如何处理对另一个Web应用程序中引用的预编译Web应用程序的Web页面的请求?

时间:2012-05-10 13:52:57

标签: asp.net httphandler precompiled

我们公司希望将我们的Web应用程序的预编译版本提供给第三方,以便他们可以添加自己的页面和模块。 为了实现这一目标,我到目前为止做了以下事情:

  1. 将我们的主要网络应用程序编译为Web部署项目
  2. 创建了一个POC Web应用程序,它引用了上面步骤1产生的DLL。
  3. 然后我将以下静态方法添加到我们的主Web应用程序中,它应该有希望处理对其预编译的aspx页面的请求:

    public static bool TryProcessRequest(HttpContext context)
    {
        string rawUrl = context.Request.RawUrl;
        int aspxIdx = rawUrl.IndexOf(".aspx");
        if (aspxIdx > 0)
        {
            string aspxPagePath = rawUrl.Substring(0, aspxIdx + 5);
    
            string aspxPageClassName = aspxPagePath.Substring(1).Replace('/','_').Replace(".aspx","");
            Assembly website = Assembly.GetAssembly(typeof(MCLLogin));
            Type pageClass = website.GetType(aspxPageClassName);
            ConstructorInfo ctor = pageClass.GetConstructor(new Type[] { });
            IHttpHandler pageObj = (IHttpHandler)ctor.Invoke(new object[] { });
    
            context.Server.Execute(pageObj, context.Response.Output, false);
    
            //alternative: invoking the page's ProcessRequest method - same results
            //System.Reflection.MethodInfo method = pageClass.GetMethod("ProcessRequest");
            //method.Invoke(pageObj, new object[] { context });
    
            return true;
        }
        return false; //not handled
    }
    

    然后,每当我希望我们的主Web应用程序处理请求时,我就会在POC Web应用程序ProcessRequest()的{​​{1}}方法中调用此方法。这段代码确实成功地实例化了正确类的页面并开始处理请求。

    问题: 我的HttpHandler处理程序中的代码会引发异常,因为Page_PreLoad null 。我还发现Page.Form集合为空

    我做错了什么?我应该走另一条路来实现这个目标吗?

0 个答案:

没有答案