Solved

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

Posted on 2010-11-22
10
956 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:Tom Knowlton
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 5

Author Comment

by:Tom Knowlton
ID: 34191963
tgerbert:

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

Author Comment

by:Tom 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:Tom Knowlton
Tom Knowlton earned 0 total points
ID: 34192204
seems to be working....points are yours...thx!!!!!!!!!
0
 
LVL 5

Author Comment

by:Tom 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:Tom Knowlton
ID: 34221298
thx
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

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…
IntroductionWhile developing web applications, a single page might contain many regions and each region might contain many number of controls with the capability to perform  postback. Many times you might need to perform some action on an ASP.NET po…
Michael from AdRem Software outlines event notifications and Automatic Corrective Actions in network monitoring. Automatic Corrective Actions are scripts, which can automatically run upon discovery of a certain undesirable condition in your network.…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…
Suggested Courses

632 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