Eu tenho um IIS 8.5 executando um serviço RESTful ASP.NET 4.5 WCF como aplicativo no Windows Server 2012 R2.
Durante a manutenção do serviço, desejo que todas as solicitações ao serviço WCF ( https://server/path/service.svc/whatever/path ) resultem em um código de erro personalizado (por exemplo, 555) e uma resposta JSON estática (conteúdo estático e cabeçalho Content-Type correto ). Como deve haver alguma manutenção acionada automaticamente, seria ótimo se esse comportamento do IIS pudesse ser acionado programaticamente.
Você sabe se há alguma maneira de entregar temporariamente o conteúdo JSON estático para um URL específico (e todos os subcaminhos REST-ful , consulte o exemplo de URL acima) e, adicionalmente, usar um código de erro 5xx personalizado (em vez de 200) como código de resposta HTTP?
Você está fazendo duas perguntas, como fazer isso e como fazer o script do que deseja fazer.
Não sei se é possível pronto para uso, mas uma solução é usar o módulo IIS UrlRewrite , isso é muito útil para todos os tipos de coisas, então acho que é uma boa ideia tê-lo de qualquer maneira.
Crie uma nova regra que corresponda a todas as solicitações que deseja tratar, no seu caso
path/service.svc/whatever/path
, você pode usar expressões regulares para corresponder às suas solicitações. Use uma resposta personalizada e envie seu próprio código de status. No web.config você deve ter uma seção como esta:Se você apenas fizer isso, obterá o código de erro, mas não seu json estático. Adicione uma nova entrada em system.webServer-httpErrors em web.config:
O responseMode = file significa que a localização do arquivo estático é relativa à sua raiz da web, no caso acima, bem na raiz do seu site.
Agora você precisa corrigir o tipo de conteúdo, adicione uma entrada em system.webServer-staticContent em seu web.config:
Ao testar isso localmente, você ainda pode obter uma página de erro do IIS, mas chamá-la remotamente deve funcionar.
Você pode fazer todas essas alterações na interface do usuário do gerenciador do IIS, mas se quiser criar um script, consulte os cmdlets do PowerShell IIS .