![](/img/trans.png)
[英]No HTTP resource was found that matches the request URI 'MyUrl'
[英]No HTTP resource was found that matches the request URI 'Myurl' No action was found on the controller 'controllername' that matches the request
Webapi方法在RestConsole上运行良好,但是在AndroidApplication中调用该Webapi方法时会显示错误
{“ Message”:“未找到与请求URI'http: //beatrootstudios.co.in/api/apiCityInfo/PostSearchByCategory '相匹配的HTTP资源。”,
“ MessageDetail”:“在与请求匹配的控制器'apiCityInfo'上未找到任何动作。” }
甚至我尝试了我从CityInfo到apiCityInfo的跟踪控制器名称,还尝试了各种路由技巧,正如Google在许多示例中提到的那样
我也尝试通过在下面的控制器中提到的Actionname和httppost动词放置...
我的Contoller代码是
public class apiCityInfoController : ApiController
{
private DBContext db = new DBContext();
[HttpPost, ActionName("PostSearchByCategory")]
public IHttpActionResult PostSearchByCategory(string CategoryName)
{
var errorMessage = "";
int errorCode = 0;
//string json = null;
string jsonResult = "Error";
var SubCategory = db.CityDatas.Where(x => x.CategoryName.Equals(CategoryName)).ToList().FirstOrDefault().SubCategoryName;
try
{
if (SubCategory !=null)
{
//errorMessage = " Login ID cannot be Null ";
//errorCode = 1;
var SubCategoryresult = (from p in db.CityDatas
where p.CategoryName.Equals(CategoryName)
select new
{
SubCategoryName = p.SubCategoryName,
}
).ToList();
var data = new
{
Result = new
{
//ErrorCode = errorCode,
//ErrorMessage = errorMessage,
ResultSet = SubCategoryresult,
}
};
return Json(data);
}
else
{
var Dataresult = (from p in db.CityDatas
where p.CategoryName.Equals(CategoryName)
select new
{
DataImage = p.DataImage,
DataName = p.DataName,
DataAddress = p.DataAddress,
DataPhoneNo = p.DataPhoneNo,
}
).ToList();
var data = new
{
Result = new
{
ResultSet = Dataresult,
}
};
//jsonResult = JsonConvert.SerializeObject(data);
return Json(data);
}
}
catch (Exception e)
{
errorCode = 401;
errorMessage = e.Message;
var data = new
{
Result = new
{
ErrorCode = errorCode,
ErrorMessage = "CategoryName Not Exists",
}
};
jsonResult = JsonConvert.SerializeObject(data);
}
return Ok(jsonResult);
}
模型零件是
[Table("CityInfo")]
public class CityData
{
//[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
[Key]
public int CityInfo_Id { get; set; }
public String CategoryName { get; set; }
public String SubCategoryName { get; set; }
public String DataImage { get; set; }
public String DataName { get; set; }
public String DataAddress { get; set; }
public String DataPhoneNo { get; set; }
}
模型中的DBContext
public class DBContext : DbContext
{
public DBContext()
: base("name=DefaultConnection")
{
}
public DbSet<WebApi.Models.CityData> CityDatas { get; set; }
}
表定义是
CREATE TABLE [dbo].[CityInfo] (
[CityInfo_Id] INT IDENTITY (1, 1) NOT NULL,
[CategoryName] NVARCHAR (100) NULL,
[SubCategoryName] NVARCHAR (100) NULL,
[DataImage] NVARCHAR (MAX) NULL,
[DataName] NVARCHAR (100) NULL,
[DataAddress] NVARCHAR (300) NULL,
[DataPhoneNo] NVARCHAR (100) NULL,
PRIMARY KEY CLUSTERED ([CityInfo_Id] ASC)
);
WebApi Config.cs文件是
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
//name: "DefaultApi",
//routeTemplate: "api/{controller}/{id}",
//defaults: new { id = RouteParameter.Optional }
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "Post", id = RouteParameter.Optional }
);
}
}
路由Config.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 }
);
}
Global.asx文件为
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);
Database.SetInitializer<DBContext>(null);
}
}
我究竟做错了什么? 我该如何解决错误?
参数CategoryName
是非可选的,因此您需要将其作为参数包含在请求中。 该URL应该如下所示: http://beatrootstudios.co.in/api/apiCityInfo/PostSearchByCategory?CategoryName=category
: http://beatrootstudios.co.in/api/apiCityInfo/PostSearchByCategory?CategoryName=category
,您可能希望将此操作设为GET操作,而不是POST。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.