Por que o IIS wild card mapeamento de quebrar o meu chamadas AJAX?
-
13-09-2019 - |
Pergunta
Eu estou tentando usar o jQuery para fazer algumas chamadas AJAX, mas porque eu tenho wild card (mapeamento para .NET) no IIS 6 ativado, ele parece não funcionar.Desactivar o mapeamento faz tudo magicamente funciona.
Eu coloquei o método de web atributo de métodos em um .página aspx e um .web service asmx, mas nem trabalho.Aqui é o URL de exemplo que estou usando para as chamadas AJAX:
localhost/UserChecker.aspx/CheckIfUserEmailsExists
localhost/UserChecker.asmx/CheckIfUserEmailsExists
Eu acho que deve ser algo com a forma .NET é a interpretação da URL, mas eu não sou inteiramente certo porque.Mais importante, eu não tenho certeza de como corrigi-lo, além de desabilitar o wild card mapeamento!Existe alguma outra forma???
ATUALIZAÇÃO
O CMS que eu estou usando (Kentico) faz algumas roteamento de URL, mas mesmo se eu ignorar o roteamento global.asax.cs código, ainda fico com um 404.
Obrigado antecipadamente!
Solução
Com o mapeamento curinga no IIS, executará a solicitação inicial pelo manipulador curinga primeiro. Isso será feito antes de qualquer reescrita de URL (ou roteamento de URL) pelo seu CMS.
Eu acho que é por isso que você está recebendo 404.
Você também pode tentar desativar a caixa de seleção "Verificar arquivo existe" no mapeamento do curinga para atender ao cenário quando o URL real será reescrito posteriormente para outra coisa.
Outras dicas
Esta não é uma resposta completa, mas eu espero que ele aponta na direção de uma solução.
Você já tentou acessar a url diretamente no navegador e usando alguns bem colocados pontos de interrupção para rastrear o problema?
Se você está recebendo os 404 parece que as regras para o encaminhamento não estão funcionando.
[Eu vou atualizar isso se você pode dar um pouco mais de informações sobre o comportamento que você está vendo]
ATUALIZAÇÃO
Eu acho que o que pode estar acontecendo é isso:
Você está fornecendo um separado mapeamento para seus arquivos com extensões (nestes casos .aspx e .asmx):
localhost/UserChecker.aspx/CheckIfUserEmailsExists
localhost/UserChecker.asmx/CheckIfUserEmailsExists
Esses mapeamentos estão sendo usados quando você liga o wild card mapeamentos de fora, e o '/CheckIfUserEmailsExists' é tratado usado ou ignorado.Quando você ativar o curinga mapeamentos de seu encaminhamento não informar seu aplicativo como 'rota' corretamente.
Se você removeu as extensões (com curinga mapeamentos ativado) faz o seguinte trabalho?
localhost/UserChecker/CheckIfUserEmailsExists
Adicione os URLs apropriados à lista de exclusão: use a configuração "URLs excluídos" na guia Gerenciador do Site-> Configurações. (documentação básica de ajuda)
Sugiro verificar o URL fora da sua estrutura do CMS; A questão deve estar com o roteamento de URL. Sem tsure, como estava funcionando sem o mapeamento de curingas.
Perguntas a serem entendidas: 1. Você tem seu CMS em execução ao tentar sem mapeamento de curingas? 2. Como esse sistema CMS interage com o IIS; Iaspi dll? ou manipuladores/módulos HTTP?