Como posso evitar que ASP.Net (ou IIS?) Decodifica o meu texto cifrado codificado-URL (resultando em um 404) em vez de passá-lo para o script Aprovar?

StackOverflow https://stackoverflow.com/questions/578548

Pergunta

Eu estou trabalhando em um pedaço de uma aplicação web em ASP.Net MVC onde o usuário se registra para a adesão usando um provedor de associação SQL. Quando se registarem eles são colocados no sistema, mas não aprovado. O código, em seguida, envia um e-mail de aprovação para o usuário com o e-mail indicado.

BfEncrypt refid = new BfEncrypt();
refid.Encrypt(user.ReferenceID);
string code = HttpContext.Current.Server.UrlEncode(refid.CipherText);
    ...
Body += "<a href=\"http://localhost:1091/approve/" + code + "\">Approval Link</a>\n\r\n\r";

Mas quando um usuário clica no link que recebem o seguinte erro:

Descrição: HTTP 404. O recurso que você está procurando (ou uma de suas dependências) poderia ter sido removida, teve seu nome alterado ou está temporariamente indisponível. Por favor, revise o seguinte URL e certifique-se que ele foi digitado corretamente.

URL Solicitada: / Aprovar / k / 9IHrY43os =

A questão é, se eu sou url que codifica a ligação antes de enviá-lo, por que é decodificação antes de tentar chamar a ação? O url no meu navegador é realmente ' http: // localhost: 1091 / Aprovar / k% 2f9IHrY43os% 3d ' quando eu recebo o erro. Meu roteamento está configurado corretamente, mas ele não leva em conta o extra '/' na string encriptada na url (já que não deveria estar lá de qualquer maneira.)

Foi útil?

Solução

Você pode codificá-lo como base 64 em vez de usar URLEncode.

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