首页 > 解决方案 > 如何解决 C# web api 错误 404 未找到

问题描述

我创建了一个 C# Web API,我可以在本地主机上访问它,但是在服务器部署后我收到 404 not found 错误。Postman 显示错误 - “您要查找的资源已被删除、名称已更改或暂时不可用。”。

我已经使用 Visual Studio 发布了代码,然后使用 file-zilla 将文件上传到服务器。服务器上的文件夹被标记为应用程序。我可以访问文件夹中存在的示例 html 文件,但不能访问 api 本身。

Global.asax.cs 有以下代码 -

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;
    }
}

路由配置.cs

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

        );
}

WebApiConfig.cs

public static void Register(HttpConfiguration config)
{
    // Web API configuration and services

    // Web API routes
    config.MapHttpAttributeRoutes();

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
    config.Filters.Add(new BasicAuthenticationAttribute());
}

我正在尝试调用正常的 get 方法

[BasicAuthentication]
[HttpGet]
[Route("api/getmethodapi")]
public IEnumerable<string> Get()
{
    return new string[] { "value1", "value2" };
}

我正在访问的 URI 类似于 -

https://mysampleapp.com/sampleFolder/api/getmethodapi

我可以使用 Postman 以及本地主机上的 C# 控制台应用程序获取值。任何帮助/建议将不胜感激。

标签: c#asp.netasp.net-web-api-routingwebapi

解决方案


推荐阅读