Pergunta

Quando eu defino a propriedade URL da imagem para o controle de imagem ASP que está na pasta app_data, a imagem está sendo exibida na visualização do design da página, mas não no navegador.

<form id="form1" runat="server">
<div>
    <asp:Image ID="Image1" runat="server" ImageUrl="~/App_Data/p3.jpg" />
</div>
</form>

Parece ser direto, mas não está mostrando a imagem.

Foi útil?

Solução

o App_Data Pasta é uma pasta especial reservada para dados como arquivos de banco de dados e assim NÃO renderizar qualquer conteúdo na web. Isso é por design e intencional e não pode ser alterado (até onde eu sei).

Suas imagens definitivamente não pertencem ao App_Data subpasta - coloque -os em um /images pasta ou algo mais apropriado.

Outras dicas

As imagens nunca devem ser armazenadas no App_Data Pasta. Isso é reservado para arquivos que nunca devem ser servidos diretamente ao usuário, como arquivos de banco de dados .mdb etc.

Eu criaria um /Resources ou /Resources/Images Pasta da raiz do site.

Discordo. Ao ocultar imagens na pasta app_data e criar seu próprio man-many http, você protege suas imagens e pode adicionar texto de direitos autorais etc. nas imagens antes de exibi-las.

Faço isso quando tenho fotos de Highres, não digo que todo mundo obtenha, e ter o manipulador HTTP reduzindo a imagem e colocou algum copyrightText. Excelente!

Ok, é hora de fazer o impossível ... Embora você não possa carregar imagens diretamente da pasta app_data, você pode escrever seu próprio manipulador HTTP, que lerá o arquivo de imagem da pasta app_data e enviá -lo de volta ao cliente. Seria uma subida, mas, em geral, os dados são destinados a dados que apenas seu aplicativo pode ler. Ao ter um manipulador lendo os dados, você ainda pode retornar essas imagens.

Mas é uma prática ruim e, se você estiver trabalhando para mim, seria demitido imediatamente !!!

Depende! ;)

Existem boas razões para salvar imagens em App_Data. Em situações em que seus usuários podem fazer upload de seus arquivos ou logotipos, ele protegerá esses arquivos e não os tornará acessíveis a outros usuários ou serem públicos.

Mais importante, é a única maneira de ter arquivos diferentes por instância de servidor/implantação.

Ao implantar seu aplicativo, você pode proteger esses arquivos enviados pelos usuários por instância do servidor, ativando "Excluir arquivos de app_data" na sua configuração de implantação.

Se você deseja acessar esses arquivos por URL, use um manipulador de download, downloadfile.ashx, por exemplo.

Espero que isto ajude.

O conteúdo da pasta app_data pode ser servido, mas não diretamente.
O acesso direto não é possível e não é recomendado indireto. É intencional.

No entanto, adicionar um caminho virtual pode fazer isso. Veja isso pergunta


Eu acho que as três principais respostas servem ao seu propósito.
Armazene as imagens na pasta de recursos globais ou locais também são pastas especiais e o conteúdo pode ser acessado por uma programação.

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