So erzwingen Sie, dass die Web-API den Querystring-Parameter erkennt

Der ASP.NET MVC4 Web API v1-Controller ist unten definiert. Es sollten 1 oder 2 Abfragezeichenfolgenparameter akzeptiert werden.

Der Parameter ko ist jedoch immer null, wenn die Methode aufgerufen wird. Anfrage ist unten. Wie kann man das Problem beheben, dass ein Klient- oder ein Namepart-Parameter in einer Abfragezeichenfolge übergeben werden kann?

Web API v1-Controller:

namespace MyApp.Controllers
{
    public class CustomersSearchViewModel
    {
        public string Klient { get; set; }
        public string Namepart { get; set; }
    }


    [Authorize]
    public class CustomersController : ApiController
        {

        public HttpResponseMessage Get(CustomersSearchViewModel ko)
            {
             // why ko is null ?         
             var res = GetCustomers(ko.Klient,ko.Namepart);
             return Request.CreateResponse(HttpStatusCode.OK, 
                    new { customers = res.ToArray() } );
            }

        }
    }

Der Controller wird auf Anforderung aufgerufen (die Anwendung wird aus dem virtuellen erp-Verzeichnis ausgeführt):

GET /erp/api/customers?namepart=kaks&_=1385320904347 HTTP/1.1
Host: localhost:52216
Connection: keep-alive
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36
Referer: http://localhost:52216/erp/Sale
Accept-Encoding: gzip,deflate,sdch
Accept-Language: et-EE,et;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: .myAuth=8B6B3CFFF3DF64EBEF3D258240D217C56603AF255C869FBB7934560D9F560659342DC4D1EAE6AB28454122A86C3CE6C598FB594E8DC84A; My_Session=5aw2bsjp4i4a5vxtekz

Standardrouting wird verwendet:

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

Die Anwendung muss unter Windows 2003 Server ausgeführt werden, damit Web API v.2 nicht verwendet werden kann.

Aktualisieren

Ich habe es auch versucht

public HttpResponseMessage Get(string klient, string namepart)

In diesem Fall wird jedoch der Fehler 404 zurückgegeben, und es wird keine Aktion gefunden.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage