Çalışmasına izin vermeye çalıştığım URL şu tarzda bir URL: http://somedomain.com/api/people/staff.33311 (tıpkı LAST.FM'nin RESTFul ve WebPage url'lerinde her tür işarete izin verdiği siteler gibi , örneğin " http://www.last.fm/artist/psy'aviah ", LAST.FM için geçerli bir url'dir).
İşe yarayan senaryolar şunlardır: - http://somedomain.com/api/people/ - tüm insanları döndüren - http://somedomain.com/api/people/staff33311 - da işe yarayacak, ancak bu benim gibi değil ' m sonra, url'nin aşağıdaki örnekte olduğu gibi bir "nokta" kabul etmesini istiyorum - http://somedomain.com/api/people/staff.33311 - ama bu bana bir
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
Aşağıdaki şeyleri kurdum:
"PeopleController" denetleyicisi
public IEnumerable<Person> GetAllPeople() { return _people; } public IHttpActionResult GetPerson(string id) { var person = _people.FirstOrDefault(p => p.Id.ToLower().Equals(id.ToLower())); if (person == null) return NotFound(); return Ok(person); }
WebApiConfig.cs
public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); }
Bu blog gönderisinin tüm ipuçlarını izlemeyi zaten denedim http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx ama yine de işe yaramıyor .. Ayrıca oldukça sıkıcı olduğunu düşünüyorum ve başka bir şey olup olmadığını merak ediyorum. daha iyi ve daha güvenli bir yol.
Kimliğimizin dahili olarak böyle olması nedeniyle, noktayı şu ya da bu şekilde, tercihen "" tarzında yerleştirmek için bir çözüm bulmamız gerekecek. ancak gerekirse url'ler için alternatif önerilere açığım ...