如何配置IIS服务器以承载两个应用程序,其中一个应该是默认的

时间:2017-06-19 15:57:49

标签: iis asp.net-web-api asp.net-core web

我有两个应用程序:

  • X.Web - Asp.net核心1.1 Web应用程序
  • X.Api - .NET 4.6.1中的ASP.NET WebApi2应用程序

现在它们分别以www.example.com/X.Web和www.example.com/X.Api的形式提供。我的客户希望Web应用程序可以像www.example.com一样使用。

我在我的测试环境中尝试了一个快速解决方案 - 我只是将X.Web文件夹的内容移动到wwwroot并且没有任何问题,一切正常。

但是,在我的生产服务器上,Web应用程序正常工作 - htmls,脚本和样式正确加载,但X.Api停止工作 - 我得到回应

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"         
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <title> IIS 502.5 Error </title>
        <style type="text/css"></style>
    </head>
    <body>
        <div id = "content">
            <div class = "content-container">
                <h3> HTTP Error 502.5 - Process Failure </h3>
            </div>
            <div class = "content-container">
                <fieldset>
                    <h4> Common causes of this issue: </h4>
                    <ul>
                        <li> The application process failed to start </li>
                        <li> The application process started but then stopped </li>
                    <li> The application process started but failed to listen on the configured port </li>
                </ul>
            </fieldset>
        </div>
        <div class = "content-container">
            <fieldset>
                <h4> Troubleshooting steps: </h4>
                <ul>
                    <li> Check the system event log for error messages </li>
                    <li> Enable logging the application process’ stdout messages </li>
                    <li> Attach a debugger to the application process and inspect </li>
                </ul>
            </fieldset>
            <fieldset>
                <h4> For more information visit:              
                    <a href="https://go.microsoft.com/fwlink/?linkid=808681">
                        <cite> https://go.microsoft.com/fwlink/?LinkID=808681 </cite>
                        </a>
                    </h4>
                </fieldset>
            </div>
        </div>
    </body>
</html>

每个请求。在我的事件日志中,我可以看到:

Application 'MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE/X.API' with 
physical root 'C:\inetpub\wwwroot\X.Api\' failed to start process 
with commandline '"dotnet" .\X.Web.dll', ErrorCode = 
'0x80004005 : 80008081.

问题是: 1)什么可能是一个问题 2)为什么在事件日志中我可以看到...无法启动进程     使用命令行&#39;&#34; dotnet&#34; ** ** X.Web.dll ... 3)有没有其他方法来实现我的客户的这个简单要求

1 个答案:

答案 0 :(得分:1)

所以,为了确保我理解你,最初,你有:www.example.com/X.Web和www.example.com/X.Api,X.Web正在调用X.Api,对?然后你直接将x.Web文件从wwwroot / X.Web移动到wwwroot,它在你的env上工作但不在生产环境上工作?您使用的是哪个版本的IIS?

1 /也许是个想法:通过移动X.Web,您可能已经更改了运行X.Web应用程序的用户,使其无法启动您的ASP.NET Core应用程序。

2 /我对1的建议可以解释,凭证问题。

3 /我绝对会避免将X.Web文件直接放在wwwroot下,而是将IIS配置为从www.example.com重定向到www.example.com/X.Wep。你可以使用URL Rewrite module(在这种情况下可能是一种矫枉过正,但在我看来这是一个非常好的模块,因为它可以在各种情况下提供帮助)或者只是将IIS配置为重定向,这个SO线程可以帮助{ {3}}