Hi I am deploying an MVC application on IIS on Win7. I have deployed it on localhost/appPortal. appPortal is configured as application rather than virtual directory. Unfortunately the application root in MVC gets mapped to localhost instead of localhost/appPortal. This is breaking all my links to scripts, css, images etc. Can anyone help me in understanding why this happens and how to fix it?
views:
291answers:
3The best solution is not to use rooted links in your application (ones which start with /). You can use ~/ as a reference to the root of the application. I use things like this
<script src="<%=ResolveClientUrl("~/script/something.js") %>"
to resolve to /scripts. Doing this makes your application more portable.
More information would be interesting on how you are creating the links.
The first thing to check is that the application is correctly created in IIS, which I suppose it is. (If not you'll probably get errors from nested web.config files)
The second thing, urls should be created like this and not directly:
<%= Url.Content("~/yourpath/yourfile.css") %>
Maybe this question about Url.Content shows you more options. Check as well MSDN documentation on UrlHelper and HtmlHelper.
You could also just use the HTML 5 doc type and the <base>
tag.
Yep, I just did that.
Thats probably not an option though so you should use the URL helper as Marc stated.