Pergunta

Como o & símbolo é tratado na consulta a seguir em Odata?

/vendordataservice.svc/vDataMapper_SourceMapVendor?&$filter=startswith(ParentName,'AT&T')&$top=7&$skip=0

Estou usando EF3.5 e SQL2008. Quando envio isso para o meu serviço Odata, não recebo dados de volta.

Foi útil?

Solução 2

Aqui está uma lista de caracteres que devem ser codificados antes de enviar ao SQL Server sobre o HTTP:

http://msdn.microsoft.com/en-us/library/aa226544(sql.80).aspx

Sim, o símbolo '&' é um deles.

Outras dicas

Não use o "JavaScript String reply () Método". Ele substituirá a primeira ocorrência dos caracteres especiais. Se você tiver 2 ocorrência dos mesmos caracteres especiais no parâmetro de filtragem, ele falhará. Portanto, use a expressão regular para substituir os caracteres.

function replaceSpecialCharacters(attribute) {
  // replace the single quotes
     attribute = attribute.replace(/'/g, "''");

     attribute = attribute.replace(/%/g, "%25");
     attribute = attribute.replace(/\+/g, "%2B");
     attribute = attribute.replace(/\//g, "%2F");
     attribute = attribute.replace(/\?/g, "%3F");

     attribute = attribute.replace(/#/g, "%23");
     attribute = attribute.replace(/&/g, "%26");
     return attribute;
}

Também preste atenção, já que as substituições também contêm % então % ele deve ser substituído no começo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top