【问题标题】:Reach static files under application within website using IIS使用 IIS 访问网站内应用程序下的静态文件
【发布时间】:2018-01-04 16:57:04
【问题描述】:

我在 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>

但是如果我更改了 &lt;%# %&gt; tag to &lt;%= %&gt; ,那么它可以在某些页面上运行,但其他页面会抛出错误: “仅允许直接在包含内容控件的内容页面中使用内容控件”。对于这个错误,我找到了将 &lt;%= %&gt; 更改为 &lt;%# %&gt; 的解决方案,这对我不起作用,它使我的 js 文件在任何页面上都无法再次工作。

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    我发现使用以下代码的解决方案有效(它在我的母版页的头标签中):

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

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

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

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

    希望对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-28
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 2016-12-24
      • 1970-01-01
      • 2015-11-11
      相关资源
      最近更新 更多