Кажется, я хожу кругами, и переход в режим отладки совсем не помогает. Глядя на контроллер и модель для участников, я не вижу никаких повторяющихся подписей (блоки кода ниже), и мне кажется, что вызов ajax (JQuery) найден. Если бы кто-то мог указать мне правильное направление, я был бы очень признателен.
Я вижу, что выполняется вызов API и что он возвращает код 500 с полной ошибкой. ниже.
Я также пробовал очистить, перестроить, выполнить полную очистку кеша, перезапустить пул приложений и перезапустить компьютер, на котором я это запускаю. В основном просто для того, чтобы убить как можно больше соломинок.
Полная ошибка, которую я получаю:
{
"Message": "An error has occurred.",
"ExceptionMessage": "Multiple actions were found that match the request: \r\nGet on type Portal.api.MembersController\r\nGet on type Portal.api.MembersController",
"ExceptionType": "System.InvalidOperationException",
"StackTrace": " at System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction(HttpControllerContext controllerContext)\r\n at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__15.MoveNext()"
}
Вызов JQuery/Javascript
function fetchMemberDetails(el) {
var puid = $(el).val();
var pattern = /^[a-z\'\-]+[0-9]{3}$/i;
if (pattern.test(puid)) {
$.ajax({
type: 'GET',
url: baseMembersURL + puid,
dataType: "json",
success: function (data) {
$.map(JSON.parse(data), function (i, item) {
('#spanNewName').text(item.Name);
})
}
});
}
}
Контроллер участников
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web.Http.Results;
using System.Web.Script.Serialization;
namespace Portal.api
{
public class MembersController : ApiController
{
JavaScriptSerializer jss = new JavaScriptSerializer
{
MaxJsonLength = int.MaxValue
};
// GET api/
public void Get()
{
}
public JsonResult Get(object id)
{
if (Central.GetSession("PermissionLevel", "PORTAL") == "" && Central.GetSession("PermissionLevel", "PORTAL").All(char.IsDigit) && int.Parse(Central.GetSession("PermissionLevel", "PORTAL")) >= 2)
{
List rows = new List();
Dictionary row;
Models.TeamViewer.Member member = new Models.TeamViewer.Member(id);
row = new Dictionary
{
//return objects
};
rows.Add(row);
return Json(jss.Serialize(rows));
}
else
{
// Error handling if conditions not met
}
}
// POST api/
public void Post([FromBody] string value)
{
}
// PUT api//5
public void Put(int id, [FromBody] string value)
{
}
// DELETE api//5
public JsonResult Delete(int id, [FromBody] string value)
{
if (Central.GetSession("PermissionLevel", "PORTAL") != "" && Central.GetSession("PermissionLevel", "PORTAL").All(char.IsDigit) && int.Parse(Central.GetSession("PermissionLevel", "PORTAL")) >= 2)
{
List rows = new List();
Dictionary row;
Models.TeamViewer.Member member = new Models.TeamViewer.Member(id);
//Delete Member
}
return Json(jss.Serialize(value));
}
}
}
Модель участников
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Linq;
using Portal.Modules;
namespace Portal.Models.TeamViewer
{
public class Member
{
private string sql;
private DataTable dt = new DataTable();
private readonly List sqlParams = new List();
public int ID { get; set; }
public string PUID { get; set; }
public string Name { get; set; }
public string Skills { get; set; }
public List Teams { get; set; }
public Member()
{
}
public Member(object id)
{
if (id.GetType() == typeof(int))
{
ID = (int)id;
FetchByID();
}
else if (id.GetType() == typeof(string))
{
PUID = (string)id;
FetchByPUID();
}
}
public Member(string puid, string name, string skills)
{
ID = 0;
PUID = puid;
Name = name;
Skills = skills;
}
public void FetchByID()
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@ID", ID));
sql = "SELECT PUID, Name, Skills, FkRank, LongRank, ShortRank " +
" FROM TeamPlanner_Members" +
" WHERE ID = @ID";
dt = SQLDB.FetchMultipleValues(sql, Central.userDB, sqlParams);
if (dt.Rows.Count > 0)
{
PUID = (string)dt.Rows[0]["PUID"];
Name = (string)dt.Rows[0]["Name"];
Skills = (string)dt.Rows[0]["Skills"];
Teams = GetTeamList();
}
}
public void FetchByPUID()
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@PUID", PUID));
sql = "SELECT ID, Name, Skills " +
" FROM TeamPlanner_Members" +
" WHERE PUID = @PUID";
dt = SQLDB.FetchMultipleValues(sql, Central.userDB, sqlParams);
if (dt.Rows.Count > 0)
{
ID = (int)dt.Rows[0]["ID"];
Name = (string)dt.Rows[0]["Name"];
Skills = (string)dt.Rows[0]["Skills"];
Teams = GetTeamList();
}
}
public void Save()
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@PUID", PUID));
sqlParams.Add(new SqlParameter("@Name", Name));
sqlParams.Add(new SqlParameter("@Skills", Skills));
if (ID != 0)
{
sql = "INSERT INTO TeamPlanner_Members(PUID, Name, Skills) " +
" VALUES(@PUID, @Name, @Skills)";
SQLDB.ExecuteSQL(sql, Central.userDB, sqlParams);
SaveTeamList();
}
else
{
string ret;
sqlParams.Add(new SqlParameter("@ID", ID));
sql = "UPDATE TeamPlanner_Members " +
" SET PUID = @PUID" +
" , Name = @Name" +
" , Skills = @Skills" +
" WHERE ID = @ID";
ret = SQLDB.ExecuteSQL(sql, Central.userDB, sqlParams);
if (ret.All(char.IsNumber))
{
ID = int.Parse(ret);
SaveTeamList();
}
}
}
private List GetTeamList()
{
List teamList = new List();
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@Member", ID));
sql = "SELECT FkTeam FROM TeamPlanner_Team_Member WHERE FkMember = @Member ORDER BY Ordering";
dt = SQLDB.FetchMultipleValues(sql, Central.userDB, sqlParams);
foreach (DataRow row in dt.Rows)
{
teamList.Add(new Team((int)row["FkTeam"]));
}
return teamList;
}
private void SaveTeamList()
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@Member", ID));
sql = "DELETE FROM TeamPlanner_Team_Member WHERE FkMember = @Member";
SQLDB.ExecuteSQL(sql, Central.userDB, sqlParams);
foreach (Team team in Teams)
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@Member", ID));
sqlParams.Add(new SqlParameter("@Team", team.ID));
sql = "INSERT INTO TeamPlanner_Team_Members(FkMember, FkTeam) VALUES (@Member, @Team)";
SQLDB.ExecuteSQL(sql, Central.userDB, sqlParams);
}
}
public void AddToTeamList(int teamID)
{
Teams.Add(new Team(teamID));
}
public void RemoveFromTeamList(int teamID)
{
Teams.Remove(new Team(teamID));
}
}
}
Регистрация маршрута в Global
routes.MapHttpRoute(
name: "APIs",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Подробнее здесь: https://stackoverflow.com/questions/793 ... controller
Было обнаружено несколько действий, соответствующих запросу на вход в контроллер. ⇐ Jquery
Программирование на jquery
1735888304
Anonymous
Кажется, я хожу кругами, и переход в режим отладки совсем не помогает. Глядя на контроллер и модель для участников, я не вижу никаких повторяющихся подписей (блоки кода ниже), и мне кажется, что вызов ajax (JQuery) найден. Если бы кто-то мог указать мне правильное направление, я был бы очень признателен.
Я вижу, что выполняется вызов API и что он возвращает код 500 с полной ошибкой. ниже.
Я также пробовал очистить, перестроить, выполнить полную очистку кеша, перезапустить пул приложений и перезапустить компьютер, на котором я это запускаю. В основном просто для того, чтобы убить как можно больше соломинок.
Полная ошибка, которую я получаю:
{
"Message": "An error has occurred.",
"ExceptionMessage": "Multiple actions were found that match the request: \r\nGet on type Portal.api.MembersController\r\nGet on type Portal.api.MembersController",
"ExceptionType": "System.InvalidOperationException",
"StackTrace": " at System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction(HttpControllerContext controllerContext)\r\n at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__15.MoveNext()"
}
Вызов JQuery/Javascript
function fetchMemberDetails(el) {
var puid = $(el).val();
var pattern = /^[a-z\'\-]+[0-9]{3}$/i;
if (pattern.test(puid)) {
$.ajax({
type: 'GET',
url: baseMembersURL + puid,
dataType: "json",
success: function (data) {
$.map(JSON.parse(data), function (i, item) {
('#spanNewName').text(item.Name);
})
}
});
}
}
Контроллер участников
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web.Http.Results;
using System.Web.Script.Serialization;
namespace Portal.api
{
public class MembersController : ApiController
{
JavaScriptSerializer jss = new JavaScriptSerializer
{
MaxJsonLength = int.MaxValue
};
// GET api/
public void Get()
{
}
public JsonResult Get(object id)
{
if (Central.GetSession("PermissionLevel", "PORTAL") == "" && Central.GetSession("PermissionLevel", "PORTAL").All(char.IsDigit) && int.Parse(Central.GetSession("PermissionLevel", "PORTAL")) >= 2)
{
List rows = new List();
Dictionary row;
Models.TeamViewer.Member member = new Models.TeamViewer.Member(id);
row = new Dictionary
{
//return objects
};
rows.Add(row);
return Json(jss.Serialize(rows));
}
else
{
// Error handling if conditions not met
}
}
// POST api/
public void Post([FromBody] string value)
{
}
// PUT api//5
public void Put(int id, [FromBody] string value)
{
}
// DELETE api//5
public JsonResult Delete(int id, [FromBody] string value)
{
if (Central.GetSession("PermissionLevel", "PORTAL") != "" && Central.GetSession("PermissionLevel", "PORTAL").All(char.IsDigit) && int.Parse(Central.GetSession("PermissionLevel", "PORTAL")) >= 2)
{
List rows = new List();
Dictionary row;
Models.TeamViewer.Member member = new Models.TeamViewer.Member(id);
//Delete Member
}
return Json(jss.Serialize(value));
}
}
}
Модель участников
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Linq;
using Portal.Modules;
namespace Portal.Models.TeamViewer
{
public class Member
{
private string sql;
private DataTable dt = new DataTable();
private readonly List sqlParams = new List();
public int ID { get; set; }
public string PUID { get; set; }
public string Name { get; set; }
public string Skills { get; set; }
public List Teams { get; set; }
public Member()
{
}
public Member(object id)
{
if (id.GetType() == typeof(int))
{
ID = (int)id;
FetchByID();
}
else if (id.GetType() == typeof(string))
{
PUID = (string)id;
FetchByPUID();
}
}
public Member(string puid, string name, string skills)
{
ID = 0;
PUID = puid;
Name = name;
Skills = skills;
}
public void FetchByID()
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@ID", ID));
sql = "SELECT PUID, Name, Skills, FkRank, LongRank, ShortRank " +
" FROM TeamPlanner_Members" +
" WHERE ID = @ID";
dt = SQLDB.FetchMultipleValues(sql, Central.userDB, sqlParams);
if (dt.Rows.Count > 0)
{
PUID = (string)dt.Rows[0]["PUID"];
Name = (string)dt.Rows[0]["Name"];
Skills = (string)dt.Rows[0]["Skills"];
Teams = GetTeamList();
}
}
public void FetchByPUID()
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@PUID", PUID));
sql = "SELECT ID, Name, Skills " +
" FROM TeamPlanner_Members" +
" WHERE PUID = @PUID";
dt = SQLDB.FetchMultipleValues(sql, Central.userDB, sqlParams);
if (dt.Rows.Count > 0)
{
ID = (int)dt.Rows[0]["ID"];
Name = (string)dt.Rows[0]["Name"];
Skills = (string)dt.Rows[0]["Skills"];
Teams = GetTeamList();
}
}
public void Save()
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@PUID", PUID));
sqlParams.Add(new SqlParameter("@Name", Name));
sqlParams.Add(new SqlParameter("@Skills", Skills));
if (ID != 0)
{
sql = "INSERT INTO TeamPlanner_Members(PUID, Name, Skills) " +
" VALUES(@PUID, @Name, @Skills)";
SQLDB.ExecuteSQL(sql, Central.userDB, sqlParams);
SaveTeamList();
}
else
{
string ret;
sqlParams.Add(new SqlParameter("@ID", ID));
sql = "UPDATE TeamPlanner_Members " +
" SET PUID = @PUID" +
" , Name = @Name" +
" , Skills = @Skills" +
" WHERE ID = @ID";
ret = SQLDB.ExecuteSQL(sql, Central.userDB, sqlParams);
if (ret.All(char.IsNumber))
{
ID = int.Parse(ret);
SaveTeamList();
}
}
}
private List GetTeamList()
{
List teamList = new List();
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@Member", ID));
sql = "SELECT FkTeam FROM TeamPlanner_Team_Member WHERE FkMember = @Member ORDER BY Ordering";
dt = SQLDB.FetchMultipleValues(sql, Central.userDB, sqlParams);
foreach (DataRow row in dt.Rows)
{
teamList.Add(new Team((int)row["FkTeam"]));
}
return teamList;
}
private void SaveTeamList()
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@Member", ID));
sql = "DELETE FROM TeamPlanner_Team_Member WHERE FkMember = @Member";
SQLDB.ExecuteSQL(sql, Central.userDB, sqlParams);
foreach (Team team in Teams)
{
sqlParams.Clear();
sqlParams.Add(new SqlParameter("@Member", ID));
sqlParams.Add(new SqlParameter("@Team", team.ID));
sql = "INSERT INTO TeamPlanner_Team_Members(FkMember, FkTeam) VALUES (@Member, @Team)";
SQLDB.ExecuteSQL(sql, Central.userDB, sqlParams);
}
}
public void AddToTeamList(int teamID)
{
Teams.Add(new Team(teamID));
}
public void RemoveFromTeamList(int teamID)
{
Teams.Remove(new Team(teamID));
}
}
}
Регистрация маршрута в Global
routes.MapHttpRoute(
name: "APIs",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Подробнее здесь: [url]https://stackoverflow.com/questions/79324234/multiple-actions-were-found-that-match-the-request-for-get-in-controller[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия