我有一个在IIS中托管的现有Web应用程序,它是一个ASP.NET MVC应用程序 . 假设这是作为 www.mysite.com
托管的 . 我正在尝试将.NET Core 2.0 Web应用程序作为子应用程序托管 .
但是当我尝试将其作为 www.mysite.com/subaApp
进行访问时,IIS正在根路径( www.mysite.com
)中查找所有静态文件( js
, css
等) .
如果有任何解决方案,请告诉我 . (我的.Net Core 2.0应用程序正在为Angular 5应用程序提供服务)
我的默认文件( index.html
)是作为Angular 5构建的一部分生成的,它看起来像这样:
<script type="text/javascript" src="inline.318b50c57b4eba3d437b.bundle.js"></script>
<script type="text/javascript" src="polyfills.bf95165a1d5098766b92.bundle.js"></script>
<script type="text/javascript" src="main.e0d3a51586e8e9fd039d.bundle.js"></script>
3 回答
在Razor处理的视图中,您可以使用“家庭相对”URL来确保放置正确的URL(包括您的虚拟目录) . 例如:
在Razor处理视图后,最终看起来像:
在常规C#代码中,您可以访问
UrlHelper
(控制器,视图组件)的实例或注入IUrlHelperFactory
并自己创建一个(在请求生命周期内运行的其他类,例如标记帮助程序),您可以使用Content
方法获取该上下文网址 .对于其他静态文件中的引用,例如CSS导入,CSS背景图像等,您应该使用路径相对URL . 例如,如果您需要在
wwwroot\css
的样式表中的wwwroot\images
中包含背景图像,那么您可以这样做:换句话说,从当前目录(wwwroot \ css到wwwroot)上升到图像目录(wwwroot \ images) .
VS在内部使用Angular CLI来构建角度文件并进行部署 . 这就是在构建过程中修改索引文件的方式 .
您可以使用以下方式将build命令设置的内容更改为客户端应用程序文件夹中的文件package.json文件
这将更改将在index.html文件中生成的JS和css文件路径的路径 .
Reference
您应该在.NET Core应用程序的Program.cs文件中的 Web host is built 时设置 root directory . 使用以下方法设置内容根目录 .
您的Program.cs文件看起来应该与此类似 .