2016-07-25 14 views
1

Ich habe einen Controller wie unten:Guid Parameter ist immer null in Controller-Action

public async Task<IHttpActionResult> MyControllerMethod(string currency = null, 
                  string edition = null, 
                  int? systems = null, 
                  string version = null, 
                  Guid? entitlementid = null) 
{ 
//Code here 
} 

Wenn ich diese Controller von dieser URL ausführen:

http://*:*/MyController/MyControllerMethod/?currency=eur&edition=DSSTANDARD&systems=50&version=6.3/ 

Alle Parameter des Verfahrens die Werte wie unten:

currency = eur 
edition = DSSTANDARD 
systems = 50 
version = 6.3 

Aber wenn ich das gleiche tun den letzten Parameter hinzu:

...&entitlementid=B5630B37-0820-4EB0-8A2A-000C44885590/ 

Dann werden die ersten drei Werte die Werte von URL aber entitlementid ist immer null. Was kann das Problem sein?

Strecke Config

config.Routes.MapHttpRoute( 
    name: "DefaultApi", 
    routeTemplate: "{controller}/{action}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 
+0

http://stackoverflow.com/questions/16605632/mvc-querystring-with-guid-returns-404 –

+0

@KartikeyaKhosla Ich habe eg16

+0

Dies sieht aus wie ein WebAPI-Aufruf. Können Sie die Routenkonfiguration anzeigen? – Nkosi

Antwort

1

Du

...&entitlementid=B5630B37-0820-4EB0-8A2A-000C44885590/ 

einen zusätzlichen Schrägstrich / am Ende der Abfragezeichenfolge enthält, die die Guid verursacht Bindung ungültig zu werden. Wenn Sie den Schrägstrich entfernen und die Anforderung stellen, wird die entitlementid ausgefüllt.

http://*:*/MyController/MyControllerMethod/?currency=eur&edition=DSSTANDARD&systems=50&version=6.3&entitlementid=B5630B37-0820-4EB0-8A2A-000C44885590

Sollte wie erwartet.