【问题标题】:Web API error - Server Error in '/api' ApplicationWeb API 错误 - “/api”应用程序中的服务器错误
【发布时间】:2019-10-06 04:17:54
【问题描述】:

将 Web API 发布到 IIS(AngularJs IIS 站点的子站点)后,我可以访问“https://localhost/api”并查看所有端点;但是当我尝试使用GET 请求到达某个特定端点时,我收到了一个错误

“/”应用程序中的服务器错误

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);
    }
}

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.SuppressDefaultHostAuthentication();
        config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

        config.MapHttpAttributeRoutes();

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

[RoutePrefix("api/branches")]
public class BranchesController : ApiBaseController
{
    [HttpGet]
    [Route("getBranches")]
    public async Task<JsonResult<List<BranchDto>>> GetActiveBranches()
    {
        var branches = new List<BranchDto>();

        var models = await WarehouseUnitOfWork.BranchRepository.GetActiveBranches();
        if (models != null && models.Count > 0)
        {
            branches.AddRange(AutoMapper.Mapper.Map<List<Branch>, List<BranchDto>>(models));
        }

        return Json(branches, new JsonSerializerSettings
        {
            ContractResolver = new WarehouseCustomContractResolver()
        });
    }
}

有什么办法解决这个问题吗?

【问题讨论】:

  • 你试过http://localhost/api而不是https://localhost/api吗?
  • 是的,我已经尝试过了。我还能做什么?
  • 你能发布你的 API 代码吗?
  • @VoiceOfTheRain 你想看一个特定的控制器吗?
  • 发布您的 Web api 路由配置以及您的 API 控制器之一

标签: asp.net-web-api asp.net-web-api2


【解决方案1】:

我的解决方案是将前端部署到主 IIS 站点,并在其中为后端创建一个名为 v1 的应用程序。 然后在我的 angularJS 中,我定义了 Production 应用程序以向 /v1/api 发出 http 请求,而不是 /api

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-02
    • 2013-09-24
    • 1970-01-01
    • 2018-07-07
    • 2017-09-18
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多