62,046
社区成员
发帖
与我相关
我的任务
分享
namespace WebApplication1
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configuration.Filters.Add(new WebApplication1.Lib.WebApiMonitorFilter());
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
}
<%@ Application Language="C#" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
//GlobalConfiguration.Configuration.Filters.Add(new WebApplication1.Lib.WebApiMonitorFilter());
//GlobalConfiguration.Configure(WebApiConfig.Register);
}
namespace WebApplication1
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/html"));
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
public class ValuesController : ApiController
{
public IEnumerable<string> Get()
{
var a = 10;
var b = a / a;
return new string[] { "value1", "value2" };
}
public string Get(int id)
{
return "value";
}
}
这个我通过URL访问
http://localhost:51361/api/Values/Get
http://localhost:51361/api/Values/Get/5
都可以.表示"基本正常"
但是如果我采用以下方式.
[RoutePrefix("BBBBB")]
[Route("{action=Index}")]
public class AAAAAController : ApiController
{
List<Product> list = new List<Product>() {
new Product() {id=1, name="产品1",price=11.11,time=DateTime.Parse("2000-01-01")},
new Product() {id=2, name="产品2",price=22.22,time=DateTime.Parse("2000-02-02")},
new Product() {id=3, name="产品3",price=33.33,time=DateTime.Parse("2000-03-03")},
new Product() {id=4, name="产品4",price=44.44,time=DateTime.Parse("2000-04-04")},
};
[Route("Product")]
[Route("Product/{id}")]
[HttpGet]
public dynamic xxxxx(int id = 0)
{
if (id == 0)
{
return list;
}
else
{
return list.Where(d => d.id == id).FirstOrDefault();
}
}
}
public class Product
{
public int id { get; set; }
public string name { get; set; }
public double price { get; set; }
public DateTime time { get; set; }
}
这我在其他测试是可以的. 但是在网站里
如果我访问.
http://localhost:51361/api/BBBBB/Product
{"Message":"找不到与请求 URI“http://localhost:51361/api/BBBBB/Product”匹配的 HTTP 资源。","MessageDetail":"未找到与名为“BBBBB”的控制器匹配的类型。"}
如果访问
http://localhost:51361/BBBBB/Product
HTTP Error 404.0 - Not Found
实际上 这个地址在另外的项目中.
http://localhost:62607/BBBBB/Product
是返回
[{"id":1,"name":"产品1","price":11.11,"time":"2000-01-01T00:00:00"},{"id":2,"name":"产品2","price":22.22,"time":"2000-02-02T00:00:00"},{"id":3,"name":"产品3","price":33.33,"time":"2000-03-03T00:00:00"},{"id":4,"name":"产品4","price":44.44,"time":"2000-04-04T00:00:00"}]
的...
{"Message":"出现错误。","ExceptionMessage":"该对象尚未初始化。请确保在所有其他初始化代码后面的应用程序启动代码中调用 HttpConfiguration.EnsureInitialized()。","ExceptionType":"System.InvalidOperationException","StackTrace":" 在 System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes()\r\n 在 System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request)\r\n 在 System.Web.Http.WebHost.Routing.HttpWebRoute.GetRouteData(HttpContextBase httpContext)"}
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
HelloWebAPI.WebApiConfig.Register(System.Web.Http.GlobalConfiguration.Configuration);
HelloWebAPI.FilterConfig.RegisterGlobalFilters(System.Web.Mvc.GlobalFilters.Filters);
}
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}