发布后WebAPI ActionName不路由:404 - 找不到文件或目录

时间:2014-05-08 20:18:53

标签: asp.net-mvc asp.net-mvc-5 asp.net-mvc-5.1

在VS中测试我的动作时,一切正常。

部署后,/ site / controller按预期响应(403),而/ site / controller / action以404响应。

从同一解决方案部署到同一根的其他api项目正在按预期工作。

每个项目都配置为IIS中的应用程序。

您能否告诉我如何处理或在此处添加哪些信息以澄清配置?

的Global.asax:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Formatting;
using System.Net.Http.Headers;
using System.Web;
using System.Web.Http;
using System.Web.Routing;


namespace ssa
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);

            GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(
            new QueryStringMapping("type", "json", new MediaTypeHeaderValue("application/json")));

            GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add(
            new QueryStringMapping("type", "xml", new MediaTypeHeaderValue("application/xml")));
        }
    }
}

WebApiConfig.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace ssa
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

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

1 个答案:

答案 0 :(得分:-1)

我不确定您是否需要在global.asax中注册所有路由,但请检查:

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/asp-net-mvc-routing-overview-cs

检查是否配置为运行目标.net版本的服务器,从服务器的角度来看,web api 1.0和2.0之间可能存在一些差异。

相关问题