2013-08-06 13 views
21

den 404 döndürür. Ben web hizmeti benim tarayıcı gittiğinizde, her şey gayet iyi çalışıyor ve gerekli işlemler yürütülür:WebAPI yöntemi ben böyle benzeyen bir yöntemle bir WebAPI denetleyicisi var HttpClient

http://localhost:xxxx/ControllerName/Run/asdf/1/asdf/07-01-2012/[email protected] 

Ancak, programlama kullanarak HttpClient ve ben olsun "Al" yürütme web hizmetini çağırmak istediğinizde 404 hatası. Kullanıcı adı parametresi bir e-posta adresi olmadığında bir hata alamıyorum. Örneğin, kullanıcı adı sadece "kullanıcı" olduğunda her şey iyi çalışıyor. Hayır şans ile e-posta adresini URLencoding denedi

var url = "http://localhost:xxxx/ControllerName/Run/asdf/1/asdf/07-01-2012/[email protected]" 
var client = new System.Net.Http.HttpClient(); 
var response = client.Get(url); 

//fails here with 404 error 
response.EnsureSuccessStatusCode(); 

: İşte örnek kod verilmiştir. Herhangi bir tavsiye takdir edilmektedir.

+0

@ 40% ile değiştirmeyi deneyin -Edit- Sadece tam bir rasgele tahmin. -Edit2- UrlEncoding sizin için değiştirmiş olmalı, eğer size söylediğim şey çalışıyorsa, UrlEncoding ve olası parametreleri nasıl kullandığınızı kontrol etmek isteyebilirsiniz. – Pluc

+2

İsteğinizin karmaşıklığı göz önüne alındığında, 'POST' fiilini kullanmak ve bunun yerine özel bir karmaşık nesne göndermek isteyebilirsiniz. Ardından, dizeleri herhangi birindeki '/' karakterini geçirme imkânsızlığı gibi başka bazı sorunları da atlayabilirsiniz. – user1908061

+0

@Pluc, Önerinizi beklediğimden hiçbir başarı elde etmedim, çünkü urlecode'un yaptığı şey tam olarak bu. Teşekkürler. –

cevap

23

Hızlı bir düşünce ... ".com" sorunu neden olabilir mi?

+18

Vay, teşekkürler! Aslında '.' Karaktere neden olan ve olmayan karakterler. Bu yayını gördükten sonra: http://stackoverflow.com/questions/13298542/apicontroller-returns-404-when-id-contains-period Sadece geçen parametreye rotasında bir sondaki '/' eklenir ve Bir çekicilik gibi çalışır. –

15

Bu, IIS'nin özel karakterleri eşlemeye çalıştığı içindir. web.config aşağıdaki ekleme sorunu çözecektir: Burada

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 

fazla bilgi:

+0

Bu, devam edeceğimizi düşündüğüm bir düzeltmedir, bununla birlikte ortaya çıkabilecek başka sorunlar olup olmadığını görmek isterim. – Codeacula

+0

@Codeacula, yönetilen modüller statik içerik sunmak için kullanılacaktır. İçeriğin herhangi bir tür yetki gerektirmesi durumunda bu iyi bir şey olacaktır. – user2320464