2012-11-09 75 views
2

我正在嘗試執行WEB簡單的寧靜服務。我的代碼基於這篇文章: http://www.progware.org/Blog/post/A-simple-REST-service-in-C.aspx 我改變了一點點,所以我的服務可以得到幾個參數。 這裏是我的變化:url中的百分比編碼WebRequest 404錯誤RESTful服務

public string GetClientNameById(string LS, string Owner, string info) 
{ 
..... 
return System.IO.File.ReadAllText(XMLFileName, Encoding.GetEncoding(1251)); 
} 
[ServiceContract(Name = "RESTServices")] 
    public interface IRESTServices 
    { 
     [OperationContract] 
     [WebGet(UriTemplate = Routing.GetEPDRoute, BodyStyle = WebMessageBodyStyle.Bare)] 
     string GetClientNameById(string Id,string LS,string tmp); 
    } 
public static class Routing 
    { 
     public const string GetEPDRoute = "/EPD/{id}+{LS}+{tmp}"; 
    } 

它正常工作與英語simbols,但我需要使用西里爾simbols。 如果我在url中使用西里爾文simbols,它會返回404錯誤。 我試過百分比編碼使用,但結果是一樣的 這裏是我的客戶端代碼:

string url = "http://localhost:4385/Service.svc/EPD/995118466+" + System.Uri.EscapeDataString("Аксенова") + "+434"; 
      WebRequest req = WebRequest.Create(url); 
      using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse) 
      { 
       StreamReader reader = new StreamReader(resp.GetResponseStream()); 
       label1.Text = reader.ReadToEnd(); 
      } 

任何想法如何解決這一問題?

更新:我發現數字代碼的解決方案爲剛剛更換非英語simbols,但我想找到更好的解決方案

+0

http://geekswithblogs.net/rakker/archive/2006/04/21/76044.aspx – m4ngl3r

回答

0
<globalization 
     requestEncoding="utf-8" 
     responseEncoding="utf-8" 
     responseHeaderEncoding="utf-8" 
     fileEncoding="utf-8" 
     resourceProviderFactoryType="" 
     enableBestFitResponseEncoding="true"/> 

在web.config中的全球化標記添加thease參數

然後使用類似這樣

//UTF-8 
HttpUtility.UrlDecode(parameter, System.Text.Encoding.UTF8) 
//UTF-16 
HttpUtility.UrlDecode(parameter, System.Text.Encoding.Unicode) 
//UTF-32 
HttpUtility.UrlDecode(parameter, System.Text.Encoding.UTF32) 

希望它有助於

+0

謝謝,但我不知道在哪裏可以把解碼操作。它在我的方法調用之前失敗。我的WCF代碼文件是空的。 svc文件只包含這個<%@ ServiceHost Language =「C#」Debug =「true」Service =「RESTService.Lib.RESTServices」Factory =「System.ServiceModel.Activation.WebServiceHostFactory」%> – Yury

+0

任何想法,我可以把HttpUtility。 UrlDecode(參數,System.Text.Encoding.UTF8)? – Yury

+0

當你得到傳遞參數,url – m4ngl3r