Pergunta

Eu tenho uma classe que implementa o iHttpmodule em uma montagem separada de um site. A implementação do módulo intercepta solicitações e reescreve URLs para o site.

Os mapeamentos são armazenados em uma classe com o URL solicitado e o URL de destino.

É o segundo exemplo, Mtsingleton, de http://devhood.com/tutorials/tutorial_details.aspx?tutorial_id=486 Adequado para criar a lista de mapeamento? Existe uma abordagem melhor dentro da implementação do módulo?

EDIT: Meu mal, isso é para IIS 6.0 e .NET 3.5 SP1

Foi útil?

Solução

Parece que você está procurando criar o objeto de mapeamentos uma vez no seu ciclo de aplicativos. Parece que você está tentando impedir que isso seja criado repetidamente por solicitação. (Por favor, esclareça se estou errado.)

Veja os métodos em Ihttpmodule. Supondo que você esteja trabalhando com Iis 7.0, o ciclo de vida do asp.net mostrará que o método init () é disparado uma vez. Ou seja, é disparado uma vez por ciclo de vida do aplicativo. Portanto, inicie o servidor da web, a primeira solicitação iniciará () em equipamento e, em seguida, as solicitações subsequentes não precisam dispará -lo até que o ciclo do aplicativo do servidor da web seja atualizado.

Você poderá mover com segurança o código de criação de mapeamentos para o método init (), que deve fornecer as salvaguardas que você está procurando com um tipo de inicialização de singleton com vários threads. Você ainda deve ter salvaguardas com vários threads em torno do seu objeto de mapeamento, mas o método init () do iHtttpmodule deve fornecer o efeito de fogo e ação que você está procurando.

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