Es wurden mehrere Aktionen gefunden, die mit der Anforderung „Get in Controller“ übereinstimmenC#

Ein Treffpunkt für C#-Programmierer
Guest
 Es wurden mehrere Aktionen gefunden, die mit der Anforderung „Get in Controller“ übereinstimmen

Post by Guest »

Ich drehe mich scheinbar im Kreis und der Wechsel in den Debug-Modus scheint überhaupt nicht zu helfen. Wenn ich mir den Controller und das Modell für Mitglieder ansehe, kann ich keine doppelten Signaturen sehen (Codeblöcke unten) und der Ajax-Aufruf (JQuery) scheint mir gefunden zu sein. Wenn mir jemand den richtigen Weg weisen könnte, wäre ich sehr dankbar.
Ich kann sehen, dass der Aufruf an die API erfolgt und dass er als Code 500 mit dem vollständigen Fehler zurückgegeben wird unten.
Ich habe auch versucht, zu bereinigen, neu zu erstellen, den Cache vollständig zu löschen, den Anwendungspool neu zu starten und den Computer neu zu starten, auf dem ich dies ausführe. Meistens nur, um so viele Strohhalme wie möglich zu töten.
Der vollständige Fehler, den ich erhalte, ist

Code: Select all

{
"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-Aufruf

Code: Select all

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);
})
}
});
}
}
Mitgliederverantwortlicher

Code: Select all

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));
}
}
}
Mitgliedermodell

Code: Select all

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));
}

}
}
Routenregistrierung weltweit

Code: Select all

    routes.MapHttpRoute(
name: "APIs",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post