Служба REST дважды декодирует параметры - PullRequest
0 голосов
/ 22 октября 2018

У меня проблема с тем, что мой хост службы REST дважды поддерживает параметры декодирования.До сих пор я не нашел способ выключить это.Например, если вы хотите передать строку «test # test» в браузере, я должен назвать ее так: http://localhost/TestWebService/TestResponse/test%2523test вместо использования обычной кодировки UTF-8 http://localhost/TestWebService/TestResponse/test%23test

Кажется, сначала нужно декодировать% 25, ​​чтобы получить символ%, который необходим для декодирования% 23 в #.Простой% 25 не работает и обрезает строку параметра.Есть ли способ отключить второе (нежелательное) декодирование?

private void StartServerHost ()
    {
            _ServiceHost = new WebServiceHost (typeof (WebService), new Uri ("http://localhost:80/TestWebService"));
            // add main endpoint and open
            _ServiceHost.AddServiceEndpoint (typeof (ITestWebService), new WebHttpBinding (), "");
            _ServiceHost.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageEnabled = false;
            _ServiceHost.Open ();

    }

Мой сервисный контракт:

[ServiceContract]
public interface ITestWebService
{
    #region TestResponse

    [OperationContract]
    [WebGet (UriTemplate = "TestResponse/{inputMessage}", ResponseFormat = WebMessageFormat.Json)]
    string TestResponse (string inputMessage);
...