为什么我的脚本包仅适用于服务器

时间:2013-09-07 23:30:10

标签: asp.net-mvc-4

我已将我的应用部署到我的IIS服务器。当我从IIS服务器浏览网页时,javascript / css似乎有效(尽管某些css似乎也没有加载)。但是,当我转到另一台机器并从客户端查看网页时,似乎没有启用任何Javascript。存在脚本链接,当我在浏览器中输入路径时,我能够检索文件(因此它不是权限问题或路径问题)。是的,我正在查看该页面的浏览器启用了javascript(这是我的开发机器,如果我在visual studio工作,一切正常)。

任何人都可以帮我弄清楚这里发生了什么吗?在我的开发机器上一切正常。


修改

好的,我已经尝试了所有可以在互联网上找到的东西。我已经尝试添加'bundle'模块,删除然后添加(如下所示),我尝试过使用和不使用'runAllManagedModulesForAllRequests',我尝试过启用和禁用

<compilation debug="false" targetFramework="4.5" />

似乎没什么用。

<modules runAllManagedModulesForAllRequests="true">
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
    <remove name="BundleModule" />
    <add name="BundleModule" type="System.Web.Optimization.BundleModule" />
    <!-- any other modules you want to run in MVC e.g. FormsAuthentication, Roles etc. -->
</modules>

我只是不明白为什么当你在服务器上本地浏览网站时IIS7会做些不同的事情,而另一件事是你在不同的机器上浏览网站时呢?


编辑2

更令人费解。我认为捆绑可能有问题(某些程序集没有正确加载谁知道)所以为了测试理论,我在布局上注释掉了所有的捆绑代码,并将其替换为样式/ javascript的硬编码链接。再次,它在开发中工作,它在服务器上预览时工作,但当你去客户端机器时,没有一个JavaScript似乎工作!我现在已经将它安装在两个不同的IIS服务器上......仍然是同样的问题!


编辑3

原谅。看起来问题是......鼓滚。 IE10。我使用集成身份验证,所以我只使用IE浏览器。直到我意识到chrome也可以提示/传递凭据。所以我从Chrome打开网站没问题!我将我的dev机器上的本地版本的html与来自服务器的html进行了比较,除了URL在路径中有一个额外的元素(该站点部署到虚拟目录)之外,html是相同的。所以无论出于何种原因,IE已经决定它不会从我的IIS服务器运行javascript,但它将来自互联网上的其他所有网站。我甚至用fiddler仔细检查所有的css / javascript是否被提取和接收(他们甚至在清扫后检查临时文件夹以查看是否已下载css / js)。所以,像往常一样,IE是一块废话,只会引起头痛和痛苦。现在想弄清楚如何解决这个问题(我的组织是80%的IE)。

2 个答案:

答案 0 :(得分:3)

因此,对于那些可能遇到同样问题并且必须使用IE的人,我通过将其添加到我的_layout.cshtml来解决问题:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

这样做是指示IE使用最新的可用渲染引擎来处理html(换句话说,不要试图聪明并猜测我的html是为什么构建的)。所以它基本上告诉具有“兼容模式”的IE版本不使用它。

对我来说这很好用,因为我们的组织规模很小,而且我们通常在IE的最新版本的一个版本中。如果最新版本导致问题,我可以轻松修复和部署而不会造成任何伤害。但是,对于在各种IE浏览器上拥有大量用户的通用网站或组织而言,这不是最佳选择。

答案 1 :(得分:0)

我也遇到过这个问题。

我发现Internet Explorer设置为&#34; high&#34;在使用我们的公司网络时浏览互联网。一旦我将我的网站添加到受信任的站点区域,一切正常。

您可以检查您的网站是否位于“受信任的站点”区域,但转到 Internet选项 - &gt; 安全性 - &gt; 网站

enter image description here