【问题标题】:Get request 404 on asp net web application owin在asp net web应用程序owin上获取请求404
【发布时间】:2020-04-21 10:47:24
【问题描述】:

我在 .net 框架 4.7.2 上有一个简单的 asp.net Web 应用程序

它有一个简单的控制器

    public class ServiceApiController : ApiController
    {
        [HttpGet]
        public string ping()
        {
            return "pong";
        }


    }

并且有一个启动类

public void Configuration(IAppBuilder app)
        {
            var config = new HttpConfiguration();

            var cors = new EnableCorsAttribute("*", "*", "*")
            {
                SupportsCredentials = true
            };

            cors.Methods.Add("POST");
            cors.Methods.Add("GET");

            config.EnableCors(cors);
            config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));

            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "ServiceApi",
                routeTemplate: "{controller}/{action}"
            );
            IoCCommon.Start(typeof(Startup).Assembly, config);

            app.UseWebApi(config);
        }

当通过 VS 2019 和 IIS Express 进行本地托管时,我向邮递员发送请求,地址为:http://localhost:8055/ServiceApi/ping

我收到回复“pong”

但是当我在 IIS 上的远程计算机上托管此应用程序并发送请求时: http://machine-address:8055/ServiceApi/ping

我得到响应“404 - 找不到文件或目录。”

您对可能出现的问题有什么建议吗?

更新:

当我去链接时在机器上(Internet Explorer)http://localhost:8055/ServiceApi/ping

我得到同样的错误:404 未找到

【问题讨论】:

  • “当我在 IIS 上的远程计算机上托管此应用程序时”含糊不清。您必须揭示您是如何做到的以及那里的 IIS 配置如何。即使是最小的错误,例如错误的站点绑定,也可能导致 404,因为请求可以路由到另一个站点,docs.jexusmanager.com/tutorials/binding-diagnostics.html

标签: asp.net .net iis owin


【解决方案1】:

托管项目的方式有问题。
OWIN 定义了 DotNet Web 服务器和 Web 应用程序之间的抽象。 OWIN 将 Web 应用程序与服务器分离,这使得 OWIN 非常适合在您自己的进程中(在 IIS 之外)自托管 Web 应用程序。
总之,使用 OWIN 托管应用程序时,无需使用 Web 服务器(IIS)。 IIS会通过网站绑定提供服务基地址,这会使OWIN的基地址不可用。但是,在本地托管时,服务地址由应用程序自己提供,这通常由Global.asaxApplication_start()方法完成

protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            //host OWIN with below address.
            var _webapplication = WebApp.Start(url: "http://localhost:9203");
        }

这是一个在控制台应用程序中自托管 WebAPI 的示例,类似于我对自托管 WebAPI 项目的描述。
https://docs.microsoft.com/en-us/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api
如果有什么我可以帮忙的,请随时告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-12
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多