繁体   English   中英

ASP.NET中的ASP.NET核心应用程序中的ASP.NET 4.5应用程序

[英]ASP.NET 4.5 application inside of ASP.NET Core app in IIS

我们有一个针对dnx-clr-win-x86.1.0.0-rc1-update1运行的ASP.NET Core 1.0 RC1应用程序,并作为单独的网站托管在IIS中。 这个工作正常。

现在,我们想向该Web应用程序添加一个“子”应用程序,因此两者都在同一端口上运行,但是该子应用程序应该在子路径/Child可用。 子应用程序是一个普通的ASP.NET 4.5 Web API应用程序。

在ASP.NET 5之前,当主应用程序也是ASP.NET 4.5应用程序时,此设置工作正常。 但遗憾的是,它失败了。当我们尝试在浏览器中访问子应用程序时,我们得到一个:

HTTP Error 502.3 - Bad Gateway
There was a connection error while trying to route the request.

Module          httpPlatformHandler
Notification    ExecuteRequestHandler
Handler         httpplatformhandler
Error Code      0x80070002

这与使用httpPlatformHandler来托管ASP.NET 5应用程序的新方法有关吗? 如上所述:它适用于主要的ASP.NET 5应用程序,而不适用于子ASP.NET 4.5应用程序。 安装了HttpPlatformHandler 1.2。

是的,httpPlatformHandler更改了此行为。

我认为您需要使用IApplicationBuilder上的“Map”扩展方法来分支HTTP请求。 因此,例如“启动”类的“配置”方法中的这段代码:

            app.MapWhen(context =>
        {
            return context.Request.Query.ContainsKey("branch");
        }, HandleBranch);

然后,HandleBranch可能看起来像:

        private void HandleBranch(IApplicationBuilder app)
    {
        app.Run(async (context) =>
        {
            await context.Response.WriteAsync("Branch used.");
        });
    }

然后,它将处理其中带有单词“ branch”的所有查询字符串。 您可以捕获子路径“ / Child”。

确保您的ASP.Net 4.5应用程序使用单独的池并且该池是受管理的。 打开ASP.Net Core app的web.config并检查“AspNetCoreModule”的名称,默认情况下是“aspNetCore”

在ASP.Net 4.5应用中打开web.config并将以下内容添加到system.Webserver => handlers部分

<configuration>
    <system.webServer>
        <handlers>
            <remove name="aspNetCore"/>
            <!--Your other handlers -->
       </handlers>
    </system.webServer>
</configuration>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM