我正在使用 IIS 10 设置新的 Windows 2019 服务器。 我正在尝试在服务器内配置两个网络应用程序。 一个是 .Net Core/Angular 16 应用程序,另一个是 .Net Framework ASP.Net 应用程序。
在之前的服务器上,我们有两个站点,一个位于端口 80/443 (ASP.Net),另一个位于 8080/8443 (.Net/Angular) 我想要做的是通过将一个应用程序移动到一个文件夹中,同时将另一个应用程序保留在根目录中来摆脱端口号。 我们首选 Angular 应用程序位于根目录: https://myapp.somehost.com/ <-- Angular Application https://myapp.somehost.com/aspx <-- ASP.Net application
.NetCore/Angular 应用程序按预期工作,但由于文件夹中有 ASPX 应用程序,我无法使用 WS Federation 通过身份验证。
访问网站时:https://myapp.somehost.com/aspx 在 Chrome 的“网络”选项卡中,我看到重定向到 WS Fed Auth 服务器 获取:aspx 获取:prp.wsf?wa=wsignin1.0&wtrealm=https...%252faspx&wct=... 获取:prp.ping 帖子:aspx - 500 错误
在浏览器中我看到: ID3206:SignInResponse 消息只能在当前 Web 应用程序内重定向:不允许“/aspx”。
虽然我发现了一些关于在 URL 中添加尾部斜杠的建议,但当我这样做时,我立即收到 500 内部服务器错误,没有身份验证重定向,并且我在任何地方都找不到任何描述该错误的内容(事件查看器、IIS 日志)等)
经过6个小时的搜索这个问题,我只让自己更加困惑。
也许将 .Net Core/Angular 应用程序作为顶级应用程序是问题所在?我不知道。 希望有人以前尝试过这样做,并能为我指出正确的方向。 谢谢
我发现这个问题的解决方案是像这样组织 IIS 站点: 站点:我的应用程序 应用程序 1:ng(具有配置为“无托管代码”的池) 应用程序 2:aspx(带有为 .NET CLR v4.0 配置的池)
已验证 http 和 https 的绑定。 在站点级别,将“HTTP 重定向”定义为:https://myapp.somehost.com/ng 具有重定向行为:仅重定向到此目录中的内容(不是子目录)
默认情况下,重定向会将用户带到 Angular 应用程序。 现在,两个应用程序共享相同的主机名,不涉及任何端口号,两个站点之间的重定向现在看起来像相同的 CORS 域,因此现在可以使用 IFrame。
在关注其他优先事项之前,我能够配置一个名为 AspxFrameComponent 的 Angular 组件,该组件将 ASPX 页面之一的 URL 作为输入参数,并在 iframe 元素中显示该页面。
采用这种方法,我们现在应该能够将 ASPX 页面无缝嵌入到我们的 Angular 应用程序中,直到我们可以完成将剩余页面从 ASPX 迁移到 Angular。 iframe 嵌入的优点是能够使用在 Angular 中实现的通用导航,而不是在同一浏览器窗口中的两个应用程序之间跳转(丢失 Angular 应用程序状态)或在新选项卡中打开新页面(再次丢失角度状态)
我仍然不完全确定为什么我不能将顶级站点定义为角度站点,并将 ASPX 应用程序作为应用程序嵌入其中,但将两者都作为应用程序执行,并且“空”顶级站点似乎工作得很好。