Pergunta

Estou construindo um serviço REST em WCF, e um dos métodos que eu estou escrevendo é GetProfile, que retornará o perfil para um determinado nome de usuário. O nome de usuário irá incluir o domínio do usuário, e assim terá o seguinte formato: "DOMAIN \ username"

.

Por isso, tem um serviço chamado Profiles.svc, que tem a seguinte endpoint configurar:

[OperationContract]
[WebGet(UriTemplate = "/{username}", ResponseFormat = WebMessageFormat.Xml)]
IRestResponse GetProfile(String username);

No entanto, quando tento visitar o serviço em http: //server/profiles.svc/DOMAIN % 5cusername (% 5c é a forma urlencoded de uma barra invertida) eu recebo o seguinte erro:

Server error in '/' Application
HTTP Error 400 - Bad Request

Isso ocorre mesmo quando não há nenhum código realmente definido na minha implementação do GetProfile, então eu acredito que o erro está sendo jogado nas tentativas ponto WCF para ligar o URI para um método.

Existem algumas configurações que eu preciso para adicionar a minha configuração do serviço web, a fim de permitir que as barras invertidas para ser adicionado a URLs em um serviço REST WCF? Ou barras invertidas simplesmente não permitido?

Foi útil?

Solução

Eu suspeito que eles simplesmente não são permitidos em que parte do url. Eles estão bem na cadeia de consulta, desde que eles são codificados. Como regra geral, eu não iria colocar qualquer coisa na parte do caminho da URL que é inválido no nome do arquivo (ou seja,?).

Talvez você poderia usar um personagem diferente para Deliminate th domínio a partir do nome de usuário.

Você também pode separar o nome de usuário em domainname e nome de usuário e usar o deliminator normais caminho '/'. Eu não sou familar com o este o suficiente para saber se isso é como fazê-lo com certeza, mas este seria o meu melhor palpite.

[OperationContract]
[WebGet(UriTemplate = "/{domainName}/{username}", ResponseFormat = WebMessageFormat.Xml)]
IRestResponse GetProfile(String domainName, String username);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top