2014-07-08 6 views
2

백 슬래시를 이스케이프 처리하기 위해 문자열을 허용하는 웹 API를 호출 할 수 있습니까?URL의 역 슬래시를 이스케이프 처리합니다.

통화 구문은 /api/testapi/PostSomeData/{ID}/{text}입니다. text은 URL, 파일 경로 또는 일부 텍스트 일 ​​수 있습니다. text이 URL이나 텍스트이면 내 프로그램이 정상적으로 작동합니다. 파일 경로가 file:///C:/TestDirec 또는 \\\\ServerName\\SomeData\\dinosaur.jpg 인 경우 실패합니다.

http://localhost:12/api/testapi/PostSomeData/1/file:///C:/TestDirec 

또한 내 WebApiConfig 파일

 [AcceptVerbs("GET")] 
     public void PostSomeData(int ID, string FilePath) 
     { 
     } 

방법이 작업을 수행하는 것입니다이

config.Routes.MapHttpRoute(
       name: "Api", 
       routeTemplate: "api/testapi/{action}/{ID}/{FilePath}", 
       defaults: new { Controller = "testapi", ID = @"\d+", FilePath [email protected]"\d+" } 
      ); 

컨트롤러 코드처럼 보이는?

답변

2

사용 WebUtility.UrlEncode 또는 HttpUtility.UrlEncode

HttpUtility.UrlEncode("file:///C:/TestDirec") 

그것은 URL에 사용하는 유효한 문자열입니다 file%3a%2f%2f%2fC%3a%2fTestDirec를 반환합니다.

+0

하지만 내 전화는 http : // localhost : 12/api/testapi/PostSomeData/1/file : /// C :/TestDirec입니다. 나는이 URL을 입력한다. – newbieCSharp

+0

@newbieCSharp이 http://google.com?q=file%3a%2f%2f%2fC%3a%2fTestDirec을 (를) 사용해보십시오 텍스트 상자에 표시되는 내용은 무엇입니까? – EZI

+0

그 작품. 나는 명확성을 위해 더 많은 코드를 추가했다. 이 웹 API 호출은 인코딩 된 URL로 작동하지 않습니다. – newbieCSharp

관련 문제