My MVC C# Web Site app is installed on an internal Azure App Service with a URL like app.domain.internal and resolved by client's DNS and certificates with another URL "app.externaldomain.com", so final users can access the site through "app.externaldomain.com" and the internal URL keeps unknown by users.
Almost everything works fine, the problem is that when code runs an Url.Action to generate URLs, it gets the app.domain.internal root and I need to change or overrite that root URL for "app.externaldomain.com", so the site can generate URLs like app.externaldomain.com/controller/action instead of app.domain.internal/controller/action (that is not accesible for final users).
There is a way to change the root URL used by MVC to generate fully qualified URLs with a custom root instead the URL of the App Service.
It is not factible to do an "url.replace('badroot', 'rigthroot')" or something similar in all the site.
Related
I have a streamlit web application. It is hosted on a vps server, combined and configured with nginx. Additionally, I received and configured access by domain name, received a ssl certificate.
I would like to place this application in Google search engines. So that when you enter a domain name into Google, it appears in the search results. I looked at the google documentation on how to do this. Actually there are two ways:
Creation of a special html page in the root directory
Adding a meta line on the main page of the application.
It seems to be nothing complicated, but how can this be done if I use streamlit as the basis of the web application? Can you give an example of what needs to be done to confirm the right to host the site?
Context
I have an Asp.Net MVC application. I would like to deploy it to an IIS (Windows Server 2016). I do not care which will be physical path, but I would like to access to the application in the virtual path '/'
(I am using Package web publish method, because no online access to the server, but I think this question is on IIS/ASP and not about publishing. I clearly miss some basic concept about IIS/ASP.)
What I've tried
1) When I try to create an Application in IIS then the dialog forces me to add an application Alias, which becomes the part of the virtual path. So regardless the physical path now the the url will be
myserver/myapp/mypage instead of myserver/mypage
which is not what I want. I would like to access to the page as myserver/mypage
2) If I simply deploy the app under wwwroot then it will appear as myserver/mypage it seems to be working, but where is the "Application" this case? (see picture).
Question
Maybe I missing something: Is this the Default Web Site is an "Application" in its own right? How to configure then its Application settings? If not, then how can I create an Application which's virtual path is '/'?
If I have understood your question correctly, you want to access the application as servername/pagename. In order to do so, do not create an "application" or "virtual directory" under a "website". Instead, directly host the content under Default website. You can change its path under "Basic Settings" and point it to your content folder.
You can also create another website at port 80 and point it to the location where your content is present. However, you will not be allowed to create 2 website with the same IP-port-hostname combination. You can solve this problem further in 3 ways.
If Default web site is not in use, then instead of creating another website, click on Default website, select basic setting from right hand panel and change the path to application content folder.
If Default website is in use, then create another another website at port 80 with a hostname.
If you do not have a hostname and are accessing the application using server-name, then you will have to modify the port to 8080 or something like that.
Refer my blog - https://blogs.msdn.microsoft.com/parvez/2016/07/27/iis-bindings/ for more information about IIS bindings
I have an ASP.NET application (WebForms) A which serves mycompany.com URL.
I need to host new website (ASP.NET MVC) B on the same IIS, which serves mycompany.com/B/... pattern.
Main objective here is that, we want to keep mycompany.com domain in URL for branding issues.
How can I manage this?
The scenarios I already tried:
I defined mycompany.com/B pattern on load balancer, so that balancer can redirect specific request to my website B. In this scenario, webpage load was successful however resource files such as css, js, etc failed to load because they tried to load from mycompany.com insted of mycompany.com/B.
You can configure B as a virtual directory in A. In IIS manager, right-click on A, choose "Add application.." and configure B from the dialog you get.
Then, the B application will know that it is not a root application, and all helper methods in MVC that generate URLs will add the correct prefix (for example, Url.Action or will give you a url starting with /B/). With methods that take a URL as parameter (like Url.Content), you'll need to use a virtual URL, starting with ~/.
I have inherited quite a complex web site project, and when I run it in VS 2012 under the default "Use default Web server" setting for "Server", it serves the login page correctly, under the base URL http://localhost:45632 and I can log in nicely. Then, when I click a menu item with the URL http://localhost:45632/Apps/Visitors/General.aspx, I get a good and plain 404.
If I then create a web site (not application under the default site) for it in IIS 7.5; set the physical directory to the project's source folder; give it a host name, xtjethro.local, and edit my hosts file to point that host name to 127.0.0.1; set the web site project to use a custom server, with a base URL of and finally, browse the site from its context menu, it serves its pages under the base url http://xtjethro.local/ instead of http://localhost:45632, everything works fine.
Then, if I set the web site project to use a custom server with a base URL of http://xtjethro.local, and restart VS2012, running it as administrator, everything works from there as well.
I would like to know why http://localhost:45632/Apps/Visitors/General.aspx doesn't work under VS2012, but http://xtjethro.local/Apps/Visitors/General.aspx does work under IIS.
The Visual Studio development web-server usually runs the site under a virtual directory which matches your project name. That would mean that the URL of your page should be http://localhost:45632/YourProjectName/Apps/Visitors/General.aspx. If you create an application under the default site in IIS, you will probably see the same problem.
You'll need to change the way your links are generated. Instead of using /Apps/..., use ~/Apps/... - ASP.NET will automatically resolve ~/ to the base path of the site.
Hi
We have a CMS application that lets people create websites under our domain.
The system was built a few years ago and it used a method that transfers parameters such as website id, folder code and more using the url. this method created a giant url for every item in the website
For example:
My domain is www.domain.com
A users website on my domain is www.domain.com/user
and every time that a user enters his website he gets a link like this
www.domain.com/page.aspx?code=blablasdsdsdsdsds&folder=blablablablablabla and more.
We are trying to reduce the string size in the url.
What are our options? can we show the user one url like a virtual one and still work the same with the old url?
We are trying to locate a solution that wont make us rewrite our entire application.
the application is built in c# and the web server is iis 6.
Thanks
You are searching for URL rewriting.
For IIS7 this functionality is build-in via the URL Rewrite Module.
For IIS6 you should read this MSDN article to follow the details on how to do it:
URL Rewriting in ASP.NET
Or you could go with one of the numerous third-party tools to do it:
UrlRewritingNet.UrlRewrite
UrlRewriter.NET
Ionics Isapi Rewrite Filter
ISAPI_Rewrite