2012-07-01 2 views
0

У меня есть действие контроллера в веб-api, которое возвращает токен строки, как показано ниже. Однако проблема возникает, когда появляется «/» в строке ответа на стороне сервера, на стороне клиента я всегда получаю '/'вместо того, где' \ 'является дополнением к исходной строке. Как я могу избавиться от него?HTTP-ответ повреждает возвращаемую строку

enter image description here

public string GetTrackProfile() 
{ 
    string token="0Q2l7m4dAekjCt/yIxk0txzyZAxjZMYZq6+OAXHPNorrel7hez2vnkLe61Mf2ZLL"; 
    return token; 
} 

стороне клиента ответ

0Q2l7m4dAekjCt/yIxk0txzyZAxjZMYZq6 + OAXHPNorrel7hez2vnkLe61Mf2ZLL

ответ

3

Если эта строка является частью заголовка HTTP, то вы должны знать, что в соответствии с RFC 2616 specification/ считается символом разделителя и должен быть надлежащим образом экранирован (что и делает веб-API для вы, предваряя его с \):

Многие значения полей HTTP/1.1 заголовок состоит из слов, разделенных LWS или специальными символами. Эти специальные символы ДОЛЖНЫ быть в строке , которая будет использоваться в пределах значения параметра (как определено в разделе 3.6).

token   = 1*<any CHAR except CTLs or separators> 
    separators  = "(" | ")" | "<" | ">" | "@" 
        | "," | ";" | ":" | "\" | <"> 
        | "/" | "[" | "]" | "?" | "=" 
        | "{" | "}" | SP | HT 

UPDATE:

Согласно комментариям, эта строка является частью сериализованном ответ JSON. Он правильно закодирован. Давайте рассмотрим следующий пример:

var json = {"d":"a\/b"}; 
alert(json.d);​ 

execute this code Когда отображается правильная строка - a/b. Так что это совершенно нормальное поведение.

+0

Нет, это не часть заголовка. строка отправляется в ответ. –

+0

Какой медиаформат вы используете для сериализации ответа? Какой контент-тип? –

+0

Content-Type: application/json using asp.net wep api default json seraliazer –