I've created a 2 custom action:
1. TestReportServerUrl
2. PublishReports (deffered)
both establish a ReportService2005 instance and then sets the URL and
Credentials (username, password and domain) captured using custom dialog.

        [CustomAction]
        public static ActionResult TestReportServerUrl(Session session)
        {
            ActionResult result;
            session.Log("TestReportServerUrl: Begin");
            if (null == session)
            {
                throw new ArgumentNullException("session");
            }
            try
            {
                string reportserverurl = session["REPORTSERVER_URL"];
                string reportserveruser = session["REPORTSERVERUSER"];
                string reportserverpassword =
session["REPORTSERVERPASSWORD"];
                string reportserverdomain = null;
                if (reportserveruser.IndexOf("\\") >= 0)
                {
                    reportserverdomain = reportserveruser.Substring(0,
reportserveruser.IndexOf("\\"));
                    reportserveruser =
reportserveruser.Substring(reportserveruser.IndexOf("\\") + 1);
                }
                else if (reportserveruser.IndexOf("@") >= 0)
                {
                    reportserverdomain =
reportserveruser.Substring(reportserveruser.IndexOf("@") + 1);
                    reportserveruser = reportserveruser.Substring(0,
reportserveruser.IndexOf("\\"));
                }
                try
                {
                    using (SSRS.ReportingService2005 service = new
SSRS.ReportingService2005())
                    {
                        if (!String.IsNullOrEmpty(reportserveruser) &&
!String.IsNullOrEmpty(reportserverpassword))
                        {
                            service.Credentials = new
System.Net.NetworkCredential(reportserveruser, reportserverpassword,
reportserverdomain);
                        }
                        else
                        {
                            service.Credentials =
System.Net.CredentialCache.DefaultCredentials;
                        }
                        service.Url = reportserverurl +
"/reportservice2005.asmx";
                        service.ListChildren("/", false);
                        session["REPORTSERVERISVALID"] = "1";
                    }
                }
                catch(Exception exi)
                {
                    string credentials =
String.Format("User:\t{0}\r\nPassword:\t{1}\r\nDomain:\t{2}",
reportserveruser, reportserverpassword, reportserverdomain);
                    ExceptionDialog.Show("Failed to connect to Report
Service.\r\nMake sure the Server is Running and that the Report Server Url
is correct.\r\nCredentials\r\n" + credentials, exi);
                    session.Log("TestReportServerUrl: exception: {0}",
exi.ToString());
                    session["REPORTSERVERISVALID"] = "0";
                }
                result = ActionResult.Success;
            }
            catch (Exception ex)
            {
                result = ActionResult.Failure;
                session.Log("TestReportServerUrl: exception: {0}",
ex.Message);
            }
            return result;
        }

If I however attempt to get a List of Catalog Items I get An Exception:

System.Net.WebException: The request failed with HTTP status 401:
Unauthorized.

I am really stuck any help will be appreciated?

Thanks
Jaco Roux
------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to