做了一个miniui+MVC的项目,在本机上调试是没有问题的,但是部署到IIS上之后发现所有的CSS,和JS引用都失效。
后来用Chrome跟踪调试发现原来是引用路径找不到了。
比如一个CSS文件引用../../Content/Style/demo.css,在本机调试路径是:
参考miniui的boot.js里的方法,获取网站根目录,设置一个全局变量,所有JS使用路径的都加上。
这个方法我也考虑过,但是我很奇怪的一点是为什么以前的WebApplication就没有这种情况呢?难道大家部署mvc程序都用的都是这个方法吗?
另:你说的"获取网站根目录"是指设置一个静态变量还是用代码获取呢?或者说miniui已经提供了内置的方法?
@Gamain:
(function(){ var href = location.href; href = href.split("#")[0]; href = href.split("?")[0]; var ss = href.split("/"); ss.length = ss.length - 1; href = ss.join("/"); window. AppPath=href; })();
在你的每个页面都要引用的JS里最前面加入这段,在你要用路径的JS里:$.post(AppPath+"xxx/xxx"..
大家一般都是部署在IIS6及以上版本所以就不会有这问题。
@向往-SONG:
我刚才看了一下,我们的server的iis是6.1的,操作系统是Windows Server2008R2,怎么还会有这个问题呢?难道是我的IIS配置不正确吗?
这样的话我所有的页面和js文件中的ajax都要做手动替换,工作量有点大。
还有一个问题是,我的菜单用的是mini-outlookmenu,导航菜单链接是配置到DB中的,比如我DB中配置的是Dispatch/CreateHeader,有没有办法统一配置成
AppPath+Dispatch/CreateHeader呢?就是在加载菜单路径之前就将这个href给修改掉,由于miniui做了代码混淆,不知道这一部分如何修改呢?
@Gamain:
难道你建的是虚拟目录,不是网站?分开建成不同的网站,用不同的端口。
从数据库读取的那就只能在后台加AppPath了。
@向往-SONG:
我建的是网址啊,只不过我们的server以前是没有装framework4和mvc3的,前天我装了一下,然后没有重启Server,不知道是不是这个问题导致的。
话说,这个问题让我纠结了3天了.............
@Gamain:
刚才说错了,我们的iis是7.5的。。。。
@Gamain:
是不是你IIS网站的路径设置错了?
如
D:/xxx/qsmc.eit/bin
看你IIS网站路径是不是设置到D:/xxx/qsmc.eit
@向往-SONG:
不知道您所说的IIS网站路径指的是什么呢?
我配置iis的方法就是把文件放到iis的默认目录下,然后再在iis中右击这个文件夹,点”转换成应用程序“就可以了啊,并没有设置iis路径啊。
@Gamain:
IIS根目录右键,新建网站,会让你填路径。
@向往-SONG: 好像是不行啊
@Gamain: 请问这个问题 最后怎么解决的啊。我也遇到这个问题了。js里不支持Url.Content("“),我想把<img>的src重新賦值,路徑不對
你 加 一个 httpmodel ,如果读取js。就自动加 一个路径哦。
恩,如果能实现的话这样应该是最好的办法了。Server端如果能拦截请求,把所有的静态资源(图片,css等)和ajax请求都加上路径的话,那么就不用费这么大力气做手动替换了(这真的是一个极其考验耐心的工作)。
不知道您有没有做过类似的项目,有没有可以参考的代码呢?
@Gamain: 你 查 一下。这个 很多的例子。应该比较容易的。
我试了,好像是不行啊。%>_<%
css和图片,js的路径还有一个办法是从cs后台输出,ajax的还真没想到更好的办法
我都纠结死了,不知道您有没有做过类似的项目呢?
现在mvc+UI框架应该是很流行的吧,这个问题怎么没有一个好点的解决方案呢。
我也遇到同样问题,不知道楼主怎么解决的
刚好遇到这个问题,看到了楼主的帖子,不知道楼主最后怎么解决的啊