将我的 asp.net.core 2.0 应用程序发布到 IIS 时,JavaScript 不是 运行
JavaScript not running when publishing my asp.net.core 2.0 app to IIS
我是这里的新手。我有一个 VS2017 asp.net C# 网络应用程序。我在这个阶段没有使用 Angular。这是一个简单的网站。
我隐藏了 divs,当用户点击一个菜单项时,相关的 div 出现了,我隐藏了其余的 divs。我使用 JavaScript 来完成这个。
在开发和 IIS Express 中它可以工作。当我发布到 IIS 时,它不起作用。静态页面显示正常,但菜单按钮没有任何作用。
如果我按 F12,我可以看到没有错误。我还可以看到,如果我按网络选项卡,我的 site.js 脚本似乎没有加载。
我查看了环境标签(不确定如何查看 release/publish - 希望看到 link 以获得更好的文档,直接告诉我如何使用)。
无奈之下,我删除了所有与我的 JS 文件相关的环境标签。我知道这不是正确的做事方式,我只是想找出问题所在。
为了进一步简化事情,我将 alert("hi")
直接放入我的 JS 文件中,这样当我访问该站点时它应该会弹出,但它不会。
这是我的 _Layout.cshtml 页面:
<!DOCTYPE html>
<html style="height: 101%">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"]</title>
<environment include="Development">
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" />
</environment>
<environment exclude="Development">
<link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css"
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
<link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
</environment>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@*<a asp-area="" asp-controller="Home" asp-action="Index" class="navbar-brand">Informed Products</a>*@
<a id="InformedServices" style="cursor: pointer" class="navbar-brand">Informed Services</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
@*<li><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
<li><a asp-area="" asp-controller="Home" asp-action="About">About</a></li>*@
@*<li><a asp-area="" asp-controller="Home" asp-action="Contact">Contact</a></li>*@
<li><a id="HowWeWork" style="cursor: pointer">How We Work</a></li>
<li><a id="Pricing" style="cursor: pointer">Adaptive Pricing Service</a></li>
<li><a id="About" style="cursor: pointer">About</a></li>
<li><a id="ContactUs" style="cursor: pointer">Contact Us</a></li>
</ul>
</div>
</div>
</nav>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>© 2018 - Informed Services</p>
</footer>
</div>
@*<environment include="Development,Production">*@
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@*</environment>
<environment exclude="Development">*@
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js"
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-test="window.jQuery"
crossorigin="anonymous"
integrity="sha384-K+ctZQ+LL8q6tP7I94W+qzQsfRV2a+AfHIi9k8z8l9ggpc8X+Ytst4yBo/hH+8Fk">
</script>
<script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/bootstrap.min.js"
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"
crossorigin="anonymous"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa">
</script>
<script src="~/js/site.min.js" asp-append-version="true"></script>
@*</environment>*@
@RenderSection("Scripts", required: false)
</body>
</html>
在我的 site.js 文件中:
$(document).ready(function () {
alert("b");
});
更新
我发现在服务器上,site.js
看起来不错,但 site.min.js
是空的。这可能是什么原因?
听起来您的 site.js
文件的缩小过程被破坏了。作为权宜之计,假设您不介意人们看到原始源代码,您可以更改您的网站以使用完整版本。
为此,请更改以下行以引用 site.js
:
<script src="~/js/site.min.js" asp-append-version="true"></script>
我建议您仍然寻找在您的情况下缩小失败的原因。
我是这里的新手。我有一个 VS2017 asp.net C# 网络应用程序。我在这个阶段没有使用 Angular。这是一个简单的网站。
我隐藏了 divs,当用户点击一个菜单项时,相关的 div 出现了,我隐藏了其余的 divs。我使用 JavaScript 来完成这个。
在开发和 IIS Express 中它可以工作。当我发布到 IIS 时,它不起作用。静态页面显示正常,但菜单按钮没有任何作用。
如果我按 F12,我可以看到没有错误。我还可以看到,如果我按网络选项卡,我的 site.js 脚本似乎没有加载。
我查看了环境标签(不确定如何查看 release/publish - 希望看到 link 以获得更好的文档,直接告诉我如何使用)。
无奈之下,我删除了所有与我的 JS 文件相关的环境标签。我知道这不是正确的做事方式,我只是想找出问题所在。
为了进一步简化事情,我将 alert("hi")
直接放入我的 JS 文件中,这样当我访问该站点时它应该会弹出,但它不会。
这是我的 _Layout.cshtml 页面:
<!DOCTYPE html>
<html style="height: 101%">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"]</title>
<environment include="Development">
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" />
</environment>
<environment exclude="Development">
<link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css"
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
<link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
</environment>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@*<a asp-area="" asp-controller="Home" asp-action="Index" class="navbar-brand">Informed Products</a>*@
<a id="InformedServices" style="cursor: pointer" class="navbar-brand">Informed Services</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
@*<li><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
<li><a asp-area="" asp-controller="Home" asp-action="About">About</a></li>*@
@*<li><a asp-area="" asp-controller="Home" asp-action="Contact">Contact</a></li>*@
<li><a id="HowWeWork" style="cursor: pointer">How We Work</a></li>
<li><a id="Pricing" style="cursor: pointer">Adaptive Pricing Service</a></li>
<li><a id="About" style="cursor: pointer">About</a></li>
<li><a id="ContactUs" style="cursor: pointer">Contact Us</a></li>
</ul>
</div>
</div>
</nav>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>© 2018 - Informed Services</p>
</footer>
</div>
@*<environment include="Development,Production">*@
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@*</environment>
<environment exclude="Development">*@
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js"
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-test="window.jQuery"
crossorigin="anonymous"
integrity="sha384-K+ctZQ+LL8q6tP7I94W+qzQsfRV2a+AfHIi9k8z8l9ggpc8X+Ytst4yBo/hH+8Fk">
</script>
<script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/bootstrap.min.js"
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"
crossorigin="anonymous"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa">
</script>
<script src="~/js/site.min.js" asp-append-version="true"></script>
@*</environment>*@
@RenderSection("Scripts", required: false)
</body>
</html>
在我的 site.js 文件中:
$(document).ready(function () {
alert("b");
});
更新
我发现在服务器上,site.js
看起来不错,但 site.min.js
是空的。这可能是什么原因?
听起来您的 site.js
文件的缩小过程被破坏了。作为权宜之计,假设您不介意人们看到原始源代码,您可以更改您的网站以使用完整版本。
为此,请更改以下行以引用 site.js
:
<script src="~/js/site.min.js" asp-append-version="true"></script>
我建议您仍然寻找在您的情况下缩小失败的原因。