Solved

Having to build URL from scratch vs localhost:<<PORT NUMBER>> in IDE test environment

Posted on 2010-11-22
10
952 Views
Last Modified: 2012-05-10
Currently I am having to switch my code back and forth for deployment vs local debugging:


Deployment:

        public static string PerformRedirect(string usehttps, string servername, string serverport, string webpage)
        {
            string urltouse = "";

            if (usehttps == "YES")
            {

                //urltouse = "https://" + servername + ":" + serverport + "/" + webpage;
                urltouse = "https://" + servername + "/" + webpage;
            }
            else
            {
                //urltouse = "http://" + servername + ":" + serverport + "/" + webpage;
                urltouse = "http://" + servername + "/" + webpage;
            }

            return urltouse;
        }



localhost development and debugging:

        public static string PerformRedirect(string usehttps, string servername, string serverport, string webpage)
        {
            string urltouse = "";

            if (usehttps == "YES")
            {

                urltouse = "https://" + servername + ":" + serverport + "/" + webpage;
                //urltouse = "https://" + servername + "/" + webpage;
            }
            else
            {
                urltouse = "http://" + servername + ":" + serverport + "/" + webpage;
                //urltouse = "http://" + servername + "/" + webpage;
            }

            return urltouse;
        }




Is there a way to set this up so I do not have to remember to change my code before publishing -- or -- not have to remember to change it back for testing on localhost?


MUST localhost always include a port number?  Is this so it does not conflict with IIS on my local machine?
0
Comment
Question by:knowlton
  • 5
  • 4
10 Comments
 
LVL 52

Assisted Solution

by:Carl Tawn
Carl Tawn earned 50 total points
ID: 34190765
If you're running it from within Visual Studio then you are probably using Cassini which, by default, uses a random free port when it runs. You could configure Visual Studio to run under IIS instead which would eliminate the port number when running locally.

Where are you getting the values that you pass to "PerformRedirec()"?
0
 
LVL 33

Expert Comment

by:Todd Gerbert
ID: 34190972
If you're redirecting to another page on the same server you can just do Response.Redirect("someOtherPage.aspx") without needing to worry about the protocol, server name and port number.

But it looks like this function's job is to switch between HTTP and HTTPS URLs on the same server, in the same site?

In that case, you could use a function like below which will take whatever server name and port number the current URL is using and substitute in a new scheme part of the URL (http or https) and path.

private string GetRedirectURL(string pageName, bool ssl)
{
	string scheme = ssl ? "https" : "http";

	UriBuilder newUrl = new UriBuilder();
	newUrl.Scheme = scheme;
	newUrl.Host = Request.Url.Host;
	if (!Request.Url.IsDefaultPort)
		newUrl.Port = Request.Url.Port;
	newUrl.Path = pageName;
	return newUrl.ToString();
}

Open in new window

0
 
LVL 33

Accepted Solution

by:
Todd Gerbert earned 450 total points
ID: 34190982
Or, better yet:

private string GetRedirectURL(string pageName, bool ssl)
{
	string scheme = ssl ? "https" : "http";

	UriBuilder newUrl = new UriBuilder(Request.Url);
	newUrl.Scheme = scheme;
	newUrl.Path = pageName;
	return newUrl.ToString();
}

Open in new window

0
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
LVL 5

Author Comment

by:knowlton
ID: 34191963
tgerbert:

Will your code still work if PORT number is being inserted by Cassini?
0
 
LVL 5

Author Comment

by:knowlton
ID: 34191975
tgerbert:

And...will it run the same in localhost vs deployed live?
0
 
LVL 33

Expert Comment

by:Todd Gerbert
ID: 34192015
Yes, and yes.  It uses whatever the current URL is and only changes the http(s) part and the path part, thus if the website is running under Cassini on port 50083 (e.g. the url is http://localhost:50083/yoursite/default.aspx) and you call GetRedirectURL("/someFolder/SomePage.aspx", true) it would return https://localhost:50083/someFolder/Somepage.aspx
0
 
LVL 33

Expert Comment

by:Todd Gerbert
ID: 34192059
...also note that it always constructs an aboslute path, meaning if the current URL is http://localhost/yourSite/Default.aspx and you call GetRedirectURL("page2.aspx", true) the result will be https://localhost/page2.aspx, and not https://localhost/yourSite/page2.aspx

Have a look around in the documentation at the Uri and UriBuilder classes as I'm sure you can be clever enough to fix that if it's necessary.
0
 
LVL 5

Assisted Solution

by:knowlton
knowlton earned 0 total points
ID: 34192204
seems to be working....points are yours...thx!!!!!!!!!
0
 
LVL 5

Author Comment

by:knowlton
ID: 34192231
Gah.........what did I press?

This is solved and the points go to tgerbert (450) and cart tawn (50) grade:  A
0
 
LVL 5

Author Closing Comment

by:knowlton
ID: 34221298
thx
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Lots of people ask this question on how to extend the “MembershipProvider” to make use of custom authentication like using existing database or make use of some other way of authentication. Many blogs show you how to extend the membership provider c…
Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question