- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们有 2 个独立的应用程序,一个 Web Api 应用程序和一个 MVC 应用程序,都是用 .NET 4.5 编写的。如果您要在 IIS 中的主机 header “https://www.mymvcapp.com/”下托管 MVC 应用程序,是否可以在 IIS 中的主机 header “https://www.mymvcapp.com/api/”下单独托管 Web Api 应用程序?
在 IIS 中运行 2 个应用程序的进程需要分开。我知道托管、自托管和使用 IIS 托管的不同方法。如果可能的话,我想使用 IIS。
此外,如果两个应用程序(一个 API 和一个 Web 应用程序)位于单独的服务器上,我将如何托管两个应用程序,以便我可以从 http://www.mymvcapp.com/api 提供 api
?
最佳答案
至少有 4 种方法可以做你想做的事。前两种方法适用于您有 1 个 Web 服务器,并且两个应用程序均由运行 IIS 的该 Web 服务器提供服务的情况。如果您有多个 Web 服务器在负载平衡器后面运行,只要 API 和网站在同一台服务器上运行,此方法也适用。
后两种方法使用所谓的“反向代理”,本质上是一种根据您接收的流量类型将流量从一台服务器(代理服务器)路由到多个内部服务器的方法。这适用于您在一组服务器上运行 Web 服务器并在另一组服务器上运行 API 的情况。您可以使用任何您想要的反向代理软件,我提到 nginx 和 HAProxy 因为我过去使用过这两个软件。
在 IIS 中有两种方法可以实现此目的:
如果您的物理文件夹结构如下:
c:\sites\mymvcapp
c:\sites\mymvcapp\api
您可以执行以下操作:
创建子应用程序将允许从 www.mymvcapp.com/api
访问您的“API”站点,而无需进行任何路由更改。
为此:
API
文件夹缺点是所有子应用程序都会继承其父应用程序的 Web 配置,如果其中存在冲突的设置,您会看到一些运行时怪异现象(如果它确实有效的话)。
第二种方法是使应用程序保持独立性的方法;同样,您不必执行任何路由。
假设有两个文件夹结构:
c:\sites\api
c:\sites\mvcapp
您可以在 Windows 中设置连接。从命令行*:
cd c:\sites
mklink /D /J mymvcapp c:\sites\mvcapp
cd mymvcapp
mklink /D /J api c:\sites\api
然后进入 IIS 管理器,并将两者都转换为应用程序。这样,API
将在 \api\
中可用,但实际上不会与父级共享其 web.config 设置。
如果您使用 nginx 或 haproxy 作为反向代理,您可以将其设置为将调用路由到每个应用程序。
在您的 nginx.conf 中(最佳实践是创建一个 sites-enabled
conf,它是 sites-available
的符号链接(symbolic link),并且您可以在部署时销毁该符号链接(symbolic link))执行以下操作:
location / {
proxy_pass http://mymvcapp.com:80
}
location /api {
proxy_pass http://mymvcapp.com:81
}
然后设置正确的 IIS 设置,让每个站点监听端口 80 (mymvcapp) 和端口 81 (api)。
acl acl_WEB hdr_beg(host) -i mymvcapp.com
acl acl_API path_beg -i /api
use_backend API if acl_API
use_backend WEB if acl_WEB
backend API
server web mymvcapp.com:81
backend WEB
server web mymvcapp.com:80
<小时/>
*我从内存中发出 Junction 命令;我几个月前这样做过,但最近没有这样做,所以如果命令有问题请告诉我
注意:配置文件并不意味着是完整的配置文件——仅用于显示反向代理所需的设置。根据您的环境,您可能需要设置其他设置。
关于asp.net - 如何在同一服务器上托管 Web 应用程序和 API,同时将它们分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24189181/
我刚刚用 java-swing 为我写了一个桌面时钟,我希望每次登录时该时钟都运行。 为此,我将我的 jar 文件添加到 start 文件夹,我让时钟开始运行。 但我的问题是 - 任务栏中显示的图标允
我正在尝试编写一个程序来检查用户是否上传了新视频。我想让它成为一项后端工作,不断检查用户最近的视频,然后使用我的应用程序向我的用户发送推送。有关于这个问题的任何文档或示例代码吗?我完全不知道从哪里开始
我正在为我的 Raspberry Pi 编写一个程序,该程序由两个主要部分组成: 使用 Spotify-API“Libspotify”搜索音乐并播放音乐的 C 程序。 一个在 apache2 We
我做了一个C++生成命令行并将命令转发给它的程序。目前,我正在将 cmd 控制台的输出发送到一个文件,并在我的 C++ 程序中读取它。但我想让它与管道一起工作。 是否可以从 Windows cmd 行
是否可以使用 C 程序和 malloc 找出处理器的页面大小?而不是使用 sysconf() 调用? 最佳答案 如果你可以#include一些linux内核头文件,你可以在中找到宏PAGE_SIZE
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我想实现一个算法: 从 Ruby on Rails 应用程序获取数据库对象作为输入, 对输入执行计算, 根据计算查询 Rails 数据库, 并根据查询生成一组有序结果。 我将用 C(也许是 Objec
我今天的任务是创建一个 Python 脚本(例如 A.py),它可以执行以下操作: 启动 C 程序(例如 CProg)并传递一些参数 启动另一个 Python 脚本(例如 B.py)并传递其他参数 加
我有一个在后台运行的 .NET 程序,需要创建一个可以与该程序通信的 Windows Shell 扩展。起初我以为我会在 .NET 中创建我的 Shell Extension,并使用 IpcServe
Python 程序做前端工作,C 程序做后端工作。它们中的每一个都是一个单独的过程。 Python 进程充当主进程,向 C 进程发送信号和事件。 C 进程生成统计信息、计数器和信息,这些信息被发送回
如何与 shell 脚本共享 C 头文件? shell 脚本通过命名管道与 C 程序通信。让我们假设 C 头文件中定义的枚举 SAMPLE_ONE 由 C 程序写入管道。 shell 脚本从管道中读出
我有一些客户/候选人提示我的程序不能在他们的 Windows 7 64 位版本上运行(已通过屏幕截图确认)。错误很奇怪,例如: in the trial version i am getting a
这个问题在这里已经有了答案: Why SDL defines main macro? (2 个答案) 关闭 7 年前。 我在 Windows 操作系统下使用 QT Creator 的简单程序中使用
我的导师给了我们一个基本的 C shell 来扩展,我目前正在努力让 shell 在用户在命令行中输入“cd [directory]”时更改目录。我已经得到它来停止段错误,但它不会更改目录。谁能告诉我
我以前有过这个工作,但我使用的是指针。 getenv() 不断崩溃,所以我使用 sprintf() 复制了结果。现在我想用 : 删除并只打印第一次出现的地方。请帮忙! #include #inclu
你好,我第一次使用 C primer plus book 学习 C,然后在第 16 章关于 C11 标准的 _Generic 我在 Eclipse c/c++ 中编写了一个程序并构建它产生了 8 个错
我正在尝试从另一个 C 程序执行 python 程序,其中 py 脚本的返回值为 int array[3] 我可以从 python 退出代码中获取这个数组吗?? 编辑:如果问题不清楚,我可以将 pyt
// The countChicken() method should count the number of occurrences of the word chicken (or some oth
我已经通过 ZMQ 使用同一类成功地从 C# 和 C++ 程序传输数据,其中 C++ 类是数据定义,编译器幸运地将字节数组屏蔽到类。 我如何在 C# 和 Node.js 程序之间做同样的事情?我认为他
任何人都可以为我指明有关 makefile 如何工作以及如何使用 eclipse 从头开始基本程序的好教程的方向吗?我正在为 fedora 和 C++ 使用 eclipse 3.4.1 版。提前致
我是一名优秀的程序员,十分优秀!