OK – first, it is because all these great tools are assuming the root url is /. They all give part of the picture, but they don’t know the whole story. Neither do did I. But do I google root uri, base url, AHHHH! Anyways, lets document this so I don’t and you don’t have to go nuts and google for hours like I did.
First – I am using ServiceStackVS 4.x, and it is an angular (not MVC – that might be a mistake) app. I want
- myweb.com/myApplication/myServices for the services and
- myweb.com/myApplication for the application.
So for ServiceStack (I installed the extension ServiceStackVS into Visual Studio 2013) …
- – change the web.config line from a “*” to “myApplication/myServices*” in the lines that look like:
[xml]<br data-mce-bogus="1">
<httpHandlers>
<add path="myApplication/myServices*" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*"/>
<;/httpHandlers>;
[/xml]
- Then add the HandlerFactoryPath to look like (in AppHost.cs)
[c language=”#”]</pre>
SetConfig(new HostConfig
{
DebugMode = AppSettings.Get("DebugMode", false),
AddRedirectParamsToQueryString = true,
HandlerFactoryPath = "myApplication/myServices"
});
<pre>[/c]
Now for the angular/web part
- edit all the templateUrl: items to NOT have a / at the front. So all the /partials become partials
- in all your controllers.js – you have to remove the / and add the myServices so for example, the default hello example on the web … $http.get(/hello/ becomes $http.get(myServices/hello/
- default.cshtml now edits
- all the href links and add a <base href=”/docSnibbets/” /> in the <head> section quite near the top (after title and before anything useful happens).
- all the src attributes to REMOVE the /
- in the <head>
- AND (important) in the <body> sections
Is this the final server (eg are you publishing?) add the npm stuff…
- on the publish server – do you see a node_modules folder after you publish? Likely not.
- SOOOO . install nodejs on the target computer to which you are publishing to
- go to the inetpub/…../myApplication directory and type “npm install”
- it looks at the package.json file and does all the magic for you
The main project’s properties
- edit the main project’s properties
- click on the Web tab in Visual Studio
- add /myApplication to the end of the ProjectUrl so it becomes http://localhost:28032/myApplication
- copy this to the CHECKED Override application root URL
- http://localhost:28032/myApplication
- Now … change the port by adding one ***THIS IS THE IMPORTANT BIT ***
- you can also delete the old iis express site by using this link
AHHH! It finally works (assuming you set the permission properly 🙂 )