2016-08-08 19 views
2

Ich habe die folgenden Routen in einem Benutzer-Controller einzurichten:WebAPI 2 Attribut Routing

[EnableCors("*", "*", "*")] 
[RoutePrefix("api/users")] 
[Authorize] 
public class UserController : ApiController 
{ 
    [Route("")] 
    public IHttpActionResult Get() 
    { 
    } 

    [HttpGet] 
    [Route("{id:int}")] 
    public IHttpActionResult Get(int id) 
    } 

    [HttpPost] 
    [Route("validateUser")] 
    public IHttpActionResult ValidateUser() 
    { 
    } 

    [HttpPost] 
    [Route("verify/{identityId}/{emailAddress}")] 
    public void VerifyUserEmailAddress(string identityId, string emailAddress) 
    { 
    } 
} 

Die ersten drei Strecken gut funktionieren. Aber der vierte schlägt mit einem 404. Ich Fiedler bin mit dem Anruf zu tätigen:

http://localhost:39897/api/users/verify/asldkfj/[email protected] (post ausgewählt ist)

Hat Post erfordern Daten in den Körper gesendet? Kann jemand sehen, was ich falsch mache und warum die Verifizierungsroute nicht gefunden wird?

+0

das '.com' ist das Problem. Wenn Sie einen Schrägstrich '/' hinzufügen, sollte es funktionieren. zB 'http: // localhost: 39897/api/users/verify/asldkfj/jb @ test.com /' – Nkosi

+0

? Teil einer gültigen E-Mail-Adresse. Wie repariere ich es? –

+0

Sicher ist es eine gültige E-Mail, aber ich behandelt Anfragen mit Dateierweiterungen als tatsächliche Dateien und versucht, es auf der Festplatte zu finden. wenn es es nicht finden kann, dann erhalten Sie die 404 – Nkosi

Antwort

1

Die .com in der E-Mail ist das Problem.

Sicher ist es eine gültige E-Mail, aber IIS behandelt Anfragen mit Dateierweiterungen als tatsächliche Dateianfragen und versucht, sie auf der Festplatte zu finden. Wenn es nicht gefunden werden kann, erhalten Sie die 404 Not Found

Wenn Sie der Anfrage einen Schrägstrich / hinzufügen, sollte es funktionieren.

dh http://localhost:39897/api/users/verify/asldkfj/[email protected]/