ASP.Net MVC Application points to localhost instead of application directory
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 unde开发者_运维问答rstanding why this happens and how to fix it?
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.
The 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.
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.
精彩评论