Пример #1
0
    public string ASLBGetSession(string Service, string DatabaseName, string UserName, string IPAddress, string Params)
    {
        try
        {
            //string Service = "CRB";
            // Get the Server Name
            ASLBDataContext DC            = new ASLBDataContext();
            string          URL           = "";
            string          URLout        = "";
            string[]        oDatabaseName = DatabaseName.Split(',');

            foreach (string DB in oDatabaseName)
            {
                URLout = "";
                DC.GetSession(Service, DB, UserName, IPAddress, Params, ref URLout, true);

                if (URL == "")
                {
                    URL = URLout;
                }
                else
                {
                    URL = URL + "," + URLout;
                }
            }

            return(URL);
        }
        catch (Exception ex)
        {
            throw (ex);
        }
    }
Пример #2
0
    void context_BeginRequest(object sender, EventArgs e)
    {
        HttpApplication app = sender as HttpApplication;

        if (app.Context.Handler is IReadOnlySessionState || app.Context.Handler is IRequiresSessionState)
        {
            // no need to replace the current handler
            return;
        }
        else
        {
            // swap the current handler

            app.Context.Handler = new OperatorModule_HttpHandler(app.Context.Handler);
        }
        bool useHttp = false; /*Need to see if we can change based on requester*/

        string IPAddress = app.Request.UserHostAddress.ToString();

        string UserName = app.User.Identity.Name.ToString();

        // Get key
        string apprequest = app.Request.AppRelativeCurrentExecutionFilePath.ToLower();


        apprequest = apprequest.Substring(2).TrimEnd('/');
        string key      = string.Empty;
        string Database = string.Empty;

        if (apprequest != "")
        {
            if (apprequest == "aslbtcp.asmx" || apprequest == "favicon.ico" || apprequest == "default.htm" || apprequest == "state/status.aspx")
            {
                return;
            }

            key      = apprequest.Split('/')[0];
            Database = apprequest.Split('/')[1];
        }
        else
        {
            app.Response.WriteFile("~/state/Status.aspx");
            return;
        }
        // Get Params

        //           if (Params.Length == 0) { Params = Guid.NewGuid().ToString(); }
        Params = app.Request.QueryString.ToString();
        if (app.Context.Session != null)
        {
            if (Params.Length == 0)
            {
                Params = app.Session.SessionID;
            }
            else
            {
                Params = Guid.NewGuid().ToString();
            }
        }

        // Get the URL
        ASLBDataContext DC = new ASLBDataContext();

        string URL          = "";
        string ResponseBody = "<html><head><title>{2} {3}</title></head><body><h1>{2} {3}</h1><p>See <a href=\"{0}\">{0}</a></p></body></html>";

        try
        {
            DC.GetSession(key, Database, UserName, IPAddress, Params, ref URL, useHttp);
            if (URL == null)
            {
                // No redirect found, send ~/default.htm
                app.Response.StatusCode        = 404;
                app.Response.StatusDescription = "Object Not Found";
                app.Response.Output.Write(ResponseBody,
                                          "Invalid",
                                          app.Request.Url,
                                          app.Response.StatusCode,
                                          app.Response.StatusDescription);
                app.Response.AppendHeader("Location", app.Request.Url.AbsoluteUri);
                //app.Response.WriteFile("~/default.htm");
            }
            else
            {
                if (URL.Contains("http"))
                {
                    //Begin Response
                    app.Response.StatusCode        = 307;
                    app.Response.StatusDescription = "Temporary Redirect";
                    app.Response.Output.Write(ResponseBody,
                                              URL,
                                              app.Request.Url,
                                              app.Response.StatusCode,
                                              app.Response.StatusDescription);
                    app.Response.AppendHeader("Location", URL);
                    if (!URL.Contains("msmdpump.dll"))
                    {
                        app.Response.Redirect(URL + "?" + Params);
                    }
                }
                else
                {
                    HttpContext.Current.RewritePath(URL, true);
                }
            }
        }
        catch (Exception ex)
        {
            //Begin Response
            app.Response.StatusCode        = 500;
            app.Response.StatusDescription = "Internal Server Error";
            app.Response.Output.Write(ResponseBody,
                                      "Error",
                                      app.Request.Url,
                                      app.Response.StatusCode,
                                      app.Response.StatusDescription);
            app.Response.AppendHeader("Location", URL);
        }
        finally
        {
            app.CompleteRequest();
        }
    }