我正在使用ASP.NET Web Api和angularJs開發Web應用程序。 我有一個Web API控制器是這樣的:在Web API控制器中使用相同參數的多個HttpPost操作
[ActionName("AddNewState")]
public object PostAddNewState(RegionInformation newStateParam)
{
RegionOperations regionOperation = new RegionOperations(newStateParam.StateName);
RegionInformation newStateInformation = regionOperation.NewStateInformation;
var text = new
{
newStateInformation
};
return JsonConvert.SerializeObject(text);
}
[ActionName("AddNewCity")]
public object PostAddNewCity(RegionInformation newCityParam)
{
var text = new
{
message="Hello"
};
return JsonConvert.SerializeObject(text);
}
和在客戶端我有這些功能,用於發送POST請求:
$scope.AddNewState = function() {
$http({
method: "POST",
url: "api/RegionManagement/AddNewState",
data: {
StateName: $scope.state
}
}).then(function (response) {
var obj = JSON.parse(response.data);
$scope.States.push({ text: obj.newStateInformation.StateName, value: obj.newStateInformation.ID });
});
};
$scope.AddNewCity = function() {
$http({
method: "POST",
url: "api/RegionManagement/AddNewCity",
data: {
ParentID: $scope.RegionInptes.ParentID,
CityName: $scope.city
}
}).then(function (response) {
var obj = JSON.parse(response.data);
alert(obj.message);
});
};
當我執行$ scope.AddNewCity或$ scope.AddNewState I face with 500內部服務器錯誤 .if我的評論AddNewCity action in web api contro然後我可以執行$ scope.AddNewState成功。
我在一個web api控制器中使用多個HTTPPost進行搜索並嘗試這個解決方案:Multiple HttpPost method in Web API controller,但沒有發生任何事情,我仍然有這個錯誤。
UPDATE
這是我的配置文件:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ControllerOnly",
routeTemplate: "api/{controller}"
);
config.Routes.MapHttpRoute(
name: "ControllerandId",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "ControllerAndAction",
routeTemplate: "api/{controller}/{action}"
);
}
顯示您的網頁api配置。最有可能的是routeTemplate是'{controller}/{id}',如果是這樣,那麼這就是爲什麼你會得到錯誤,因爲框架無法確定你試圖調用哪個動作。更新模板,以包括行動'{控制器}/{動作}/{編號}',看看是否可行 – Nkosi
@ Nkosi我添加我的配置文件後更新 –