使用IIS到达网站内的应用程序下的静态文件

时间:2018-01-04 16:57:05

标签: javascript asp.net iis master-pages virtual-path

我在IIS(8)的默认网站中部署了多个ASP.NET应用程序。他们的虚拟目录设置如下:App1,App2,所以我将它们作为localhost / App1 / ...,localhost / App2 / ...到达,它们运行良好。

我想在我的某个应用中的标头标记的主页文件中加载如下所示的javascript文件:

<script src="/Script/myfile.js" type="text/javascript"></script>

当我打开页面时,我在控制台中收到错误,因为找不到我的文件,因为它在localhost/Script/而不是localhost/App1/Script/

搜索文件

有没有办法将根目录设置为应用程序的根目录,其中包含应用程序的虚拟路径?

我不想将/App1字符串硬化到js文件路径的开头,因为应用程序部署了更多次,在不同的网站下有不同的应用程序名称,而且我有很多js文件太

通过下面的例子,我也没有成功:

<script type="text/javascript" src="<%# Page.ResolveClientUrl("~/Script/myfile.js") %>"></script>

但是如果我改变了<%# %> tag to <%= %>,那么它在某些页面上有效,但是其他人犯了错误: &#34;只允许内容控件直接出现在包含内容控件的内容页面中。对于此错误,我找到了将<%= %>更改为<%# %>的解决方案,这对我不起作用,它使我的js文件在任何页面上都无法再次运行。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我发现使用下面代码的解决方案有效(它在我的主页的标题中):

<script type="text/javascript" src="<%# Page.ResolveClientUrl("~/Script/myfile.js") %>"></script>

但是我需要将下面的代码放入masterpage的pageload方法中:

if(!IsPostBack)
        this.Page.DataBind();

如果没有这个,文件将不会被加载,这就是为什么它第一次对我不起作用。

希望它有所帮助。