quarta-feira, 19 de novembro de 2008

Asp.Net – evitar o postback como clique na tecla “Enter” ou “Return”

Evitar que o a tecla "enter" ou "return" faça o submit do formulário.

Acontece que no preenchimento de um formulário, muitas vezes por engano (pois queremos passar apenas para o campo seguinte) clicamos em "enter" e lá vai o formulário.

A Forma de evitar isto no asp.net é muito simples.

Basta colocar a propriedade UseSubmitBehavior="False" do <asp:Button> a false.

<asp:Button
ID="BTGravar"
runat="server"
Text="Gravar"
Width="130px"


onclick="BTGravar_Click"
UseSubmitBehavior="False"
/>

Deste modo o formulário só é enviado (post) quando clicamos no botão e não quando clicamos na tecla "enter".


 

Espero que esta pequena dica possa ajudar alguém. Parece estranho mais ainda levei algum tempo até descobrir isto. Já andava a fazer código em javascript para detectar o evento associado à tecla… E afinal é tão simples.

sexta-feira, 7 de novembro de 2008

Problemas com som num portatil HP Pavilion dv5000

De um momento para o outro o meu portátil HP Pavilion dv5097ea deixou de emitir qualquer som. Com a mensagem de que não havia hardware instalado.

No gestor de dispositivos a placa de som on board da marca Conexant tinha simplesmente "desaparecido". Na altura não me tinha apercebido por não utilizar mas o modem também da marca Conexant tinha "desaparecido".

Na Bios nada encontrei relativamente à placa de som. Em desespero instalei actualizei os drivers e a bios. Isto à excepção do driver da placa de som. Não consegui instalar porque segundo o meu bichinho, não tinha qualquer placa instalada.

Imaginei que existisse algum conflito, apesar de não haver qualquer indicação nesse sentido, pois para Windows simplesmente não existia placa de som.

Havendo conflito pensei que talvez cortando completamente a energia a coisa se resolvesse.

Já em tempos tinha tido um problema semelhante com um modem num pc. Nesse caso o modem bloqueava todo o sistema nem a bios arrancava.

Isto aconteceu na primeira semana do pc.

O mais estranho na altura era que em casa o pc nem sequer arrancava. Desligava o pc da corrente, levava-o à loja e funcionava logo. Isto ainda aconteceu umas duas vezes.

Até que cheguei à conclusão que a Solução passava por cortar a corrente ao pc durante uns segundos, para que o modem libertasse o sistema.

Foi o que resolvi fazer neste caso.

Retirei a bateria e desliguei o cabo de alimentação. Carreguei no botão de power para que ele tentasse arrancar e gastasse toda a corrente eléctrica que pudesse estar acumulada.

A seguir liguei o pc e voilá… Tinha sido encontrado novo hardware.

Uma placa de som Conexant e um modem também Conexant.

terça-feira, 4 de novembro de 2008

ERRO: Conversion of a char data type to a datetime data

Este erro ocorre na conversão de datas de string para datetim, essencialmente tem a ver com as definições locais. Ocorre quando introduzimos uma data do tipo "22-03-1953".

O que acontece é que provavelmente os setings defenidos no SQL Server, as datas estão configuradas como mm-dd-yyyy. Ou seja como ele interpreta 22 como sendo o mês, está claramente "out-of-range".

"Server Error in '/SPA' Application.

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Podemos resolver de duas formas. A primeira é converter a data no código para o formato pretendido.

A melhor solução é ir ao SQL SERVER, e alterar as propriedades do utilizador, ajustando a opção Default Language para Portugês.

No caso de a aplicação ser em ASP .NET o utilizador para o qual se deve alterar esta propriedade é o ASPNET

quinta-feira, 2 de outubro de 2008

Problemas na implementação de aplicação ASP.NET 2.0 SQL EXPRESS e SQL 2005

O WebPartManager utiliza uma base de dados para gravar as configurações de cada utilizador. Ele tenta aceder a instância padrão do SQL Server 2005 / SQL Server 2005 Express no localhost, procurando por .\SQLEXPRESS.

O grande problema é que no SQL Server 2005 este não é o nome da instância, o que resulta no seguinte erro.

"An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)"

Na utilização do Membership Provider criado no VS2008 a gestão da conection String fica a cargo do machine.config com o código abaixo.

c:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config


< connectionStrings
>

<add
name="LocalSqlServer"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient"/>

</ connectionStrings
>


Há então que reescrever a connection String no nosso web.config

</configSections>

<connectionStrings>

<remove
name="LocalSqlServer" />

<add
name="LocalSqlServer"
connectionString="Data Source=NOMEDOSERVIDOR;Initial Catalog=ASPNETDB;Integrated Security=True;"

providerName="System.Data.SqlClient" />

</connectionStrings>

<system.web>

Este código, primeiro remove as configurações default (aquelas que não permitiam funcionar) e depois adiciona a nova connection string.

Termos agora que gerar as tabelas e as queries padrões do WebPartManager. Para resolver este problema, temos um assistente do próprio ASP.NET que faz isso, criando todas as tabelas/triggers/queries etc na nossa base de dados.

Execute C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe e siga o wizard selecionando o servidor e o base de dados.


Feito isto pode surgir um novo erro quando tentamos aceder. Não é mais do que falta de permissões do user ASPNET para aceder à nossa BD.

Cannot open database "ASPNETDB" requested by the login. The login failed.
Login failed for user 'DGU\ASPNET'.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Cannot open database "ASPNETDB" requested by the login. The login failed.
Login failed for user 'DGU\ASPNET'.

O SQL Server possui dois tipos de autenticação : Windows e Standard.

A autenticação recomendada é, em 99% dos casos, a autenticação Windows. Mas esta autenticação frequentemente requer configurações envolvendo o servidor web.

Na fase de desenvolvimento podemos usar a autenticação standard.

Mas na fase de implementação da aplicação no ambiente empresarial mudar isso para autenticação windows.

Então, faça o seguinte :

1) Aceda ao SQL Server Management Studio

2) Clique com o botão direito no servidor e entre em propriedades

3) Vá ao separador security

4) ligue o modo de autenticação Windows.

5) feche esta janela.

6) Abra a pasta security

7) Abra a pasta logins

8) Peça para editar o login aspnet

9) Clique em User Mapping

10) Seleccione a opção Map do ASPNETDB e dê permissões de BasicAccess ao user ASPNET

11) Feche esta janela

13) Pronto, pode testar.


sexta-feira, 26 de setembro de 2008

ERRO 500 IIS - ERRO 36 e 10001 e 10010.doc

1. RESUMO DOS ERROS ENCONTRADOS

Erro no Browser depois de desligar “Mensagens de erro amigável”

“Não é possível apresentar a página
A página à qual está a tentar aceder tem um problema, pelo que não é possível apresentá-la.
HTTP 500 - Erro interno de servidor Internet Explorer “

Desligar “Mostrar mensagens de erro de http amigáveis”.

Erro no Browser depois de desligar “Mostrar mensagens de erro de http amigáveis”.

“Server Application Error
The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more detail information. Please contact the server administrator for assistance.”

Erro no FileMonitor (Portugal é nome da máquina.)

1 14:31:19 svchost.exe:712 OPEN C:\WINDOWS\system32\dllhost.exe ACCESS DENIED PORTUGAL\IWAM_PORTUGAL
2 14:31:19 svchost.exe:712 OPEN C:\WINDOWS\system32\dllhost.exe ACCESS DENIED PORTUGAL\IWAM_PORTUGAL

Registo de EVENTOS

Tipo de evento: Aviso
Origem do evento: W3SVC
Categoria do evento: Nenhum
ID do evento: 36
Data: 27-05-2008
Hora: 14:23:51
Utilizador: N/D
Computador: PORTUGAL
Descrição:
O servidor não conseguiu carregar a aplicação '/LM/W3SVC/1/ROOT'. O erro foi 'Erro de acesso geral negado
'.
Para obter informações adicionais específicas desta mensagem, visite o site de suporte online da Microsoft localizado em: http://www.microsoft.com/contentredirect.asp.
Para mais informações, consulte o 'Centro de ajuda e suporte' em http://go.microsoft.com/fwlink/events.asp.

Tipo de evento: Erro
Origem do evento: DCOM
Categoria do evento: Nenhum
ID do evento: 10001
Data: 27-05-2008
Hora: 14:23:51
Utilizador: NT AUTHORITY\SYSTEM
Computador: PORTUGAL
Descrição:
Não foi possível iniciar um servidor DCOM: {99169CB1-A707-11D0-989D-00C04FD919C1} como ./IWAM_PORTUGAL. O erro:
"O acesso é negado. "
Ocorreu ao iniciar este comando:
C:\WINDOWS\system32\dllhost.exe /Processid:{3D14228D-FBE1-11D0-995D-00C04FD919C1}
Para mais informações, consulte o 'Centro de ajuda e suporte' em http://go.microsoft.com/fwlink/events.asp.

2. Corrigir então as permissões NTFS e direitos de utilizador para um servidor Web do IIS 5.0

“How to set required NTFS permissions and user rights for an IIS 5.0 Web server”

http://support.microsoft.com/kb/271071/en-us/#appliesto

Conceder a propriedade e permissão para o administrador e para o sistema

Para atribuir permissões para o sistema:

1. Abra o Explorador do Windows.. Para efectuar este procedimento, clique em Iniciar , clique em Programas , e em seguida, clique em Explorador do Windows .
2. Expanda o meu computador .
3. Clique com o botão direito do rato na unidade de sistema (isto é normalmente a unidade C), e em seguida, clique em Propriedades
4. Faça clique sobre o separador de segurança e em seguida, clique em Avançadas para abrir a caixa de diálogo Definições de controlo para disco local de acesso
5. Faça clique sobre o separador Proprietário , clique para seleccionar a caixa de verificação Substituir proprietário em sub contentores e objectos e em seguida, clique em Aplicar .
Se receber a seguinte mensagem de erro, clique em ' continuar ' :
Ocorreu um erro ao aplicar informações de segurança para %systemdrive%\Pagefile.sys
6. Se receber a seguinte mensagem de erro, clique em Sim :
Não tem permissão para ler o conteúdo do directório %systemdrive%\System Volume Information - tarefa que pretende substituir a permissão de directório-All permissão conceder Controlo total (Full Control) que será substituído.
7. Clique em OK para fechar a caixa de diálogo.
8. Clique em Adicionar .
9. Adicionar os seguintes utilizadores, e seguida, conceda-los a permissão NTFS Controlo total:
• Administrador
• Sistema
• Proprietário criador
10. Depois de ter adicionado estas permissões NTFS, clique em Avançadas , clique para seleccionar a caixa de verificação Repor permissões em todos os objectos subordinados e permitir a propagação de permissões herdáveis e em seguida, clique em Aplicar .
11. Se receber a seguinte mensagem de erro, clique em ' continuar ' :
Ocorreu um erro ao aplicar informações de segurança para %systemdrive%\Pagefile.sys
12. Depois é ter repor as permissões do NTFS, clique em OK .
13. Clique no grupo Todos (Everyone) , clique em Remover , e em seguida, clique em OK .
14. Abra as propriedades para a pasta c:\Programas\Ficheiros ficheiros %SystemDrive%\Program, e em seguida, clique na. segurança adicionar a conta que é utilizada para acesso anónimo.
Por predefinição, este é IUSR_ <MachineName> Conta. Em seguida, adicione o grupo Utilizadores. Certifique-se que apenas o seguinte estão seleccionados:
• Ler & executar
• Listar conteúdo das pastas
• Ler
15. Abra as propriedades para o directório de raiz que contém a Web de conteúdo. Por predefinição, esta é a pasta %systemdrive%\Inetpub\Wwwroot. Clique no separador Segurança, adicionar IUSR_ <MachineName> Conta e o utilizadores agrupar, e certifique-se de que apenas o seguinte estão seleccionados:
• Ler & executar
• Listar conteúdo das pastas
• Ler
16. Se a quem pretende conceder permissão Escrever NTFS para Inetpub\FTProot ou o caminho de directório para o local de FTP ou sites, repita o passo 15.
 
Desactive a herança nos directórios de sistema
1. Na pasta %SystemRoot%\System32, seleccione todas as pastas, excepto o seguinte procedimento:
• Inetsrv
• Certsrv (se presente)
• Com
2. Clique com o botão direito do rato as restantes pastas, clique em Propriedades e, em seguida, clique no separador Segurança.
3. Clique para desmarcar a caixa de verificação Permitir as permissões herdáveis , faça clique sobre Copiar , e em seguida, clique em OK .
4. Na pasta % SystemRoot % seleccione todas as pastas, excepto o seguinte procedimento:
• Assemblagem (se presente)
• Ficheiros de programa transferidos
• Ajudar a
• Microsoft.NET (se presente)
• Páginas Web offline
• SYSTEM32
• Tarefas
• TEMP
• Web
5. Clique com o botão direito do rato as restantes pastas, clique em Propriedades e, em seguida, clique no separador Segurança .
6. Clique para desmarcar a caixa de verificação Permitir as permissões herdáveis , faça clique sobre Copiar , e em seguida, clique em OK .
7. Aplicar permissões ao seguinte procedimento:
a). Abrir as propriedades para a pasta % SystemRoot %, clique no separador Segurança (Security), adicione os IUSR_ <MachineName> e IWAM_ <MachineName> contas e o utilizadores agrupar, e certifique-se de que apenas o seguinte estão seleccionados:
• Ler & executar
• Listar conteúdo das pastas
• Ler
 
b). Abertas as propriedades para a pasta %SystemRoot%\Temp, seleccione a IUSR_ <MachineName> Conta (esta conta está já presente uma vez que herda a partir da pasta Winnt), e em seguida, clique para seleccionar a caixa de verificação modificar. Repita este passo para o IWAM_ <MachineName> Conta e o grupo Utilizadores.
 
c). Se Clients extensão do servidor do FrontPage como, por exemplo, o FrontPage ou Microsoft Visual InterDev estiverem a ser utilizados, abra as propriedades para a pasta %systemdrive%\Inetpub\Wwwroot, seleccione o grupo Utilizadores autenticados , seleccione o seguinte, e em seguida, clique em OK :
• Modificar
• Ler & executar
• Listar conteúdo das pastas
• Ler
• Escrever

3. Registo de Eventos

Ao tentarmos aceder a http://localhost/iisstart.asp continuamos com os mesmos erros no browser. Quanto ao filemon.exe da sysinternals já não dá erros de “ACCESS DENIED” .
 
Se verificarmos agora o registo de eventos deixamos de ter o erro com o id 10001 e passamos a ter o erro com o id 10010.
 
O evento tipo aviso com id 36 mantêm-se

Tipo de evento: Erro
Origem do evento: DCOM
Categoria do evento: Nenhum
ID do evento: 10010
Data: 27-05-2008
Hora: 15:09:52
Utilizador: NT AUTHORITY\SYSTEM
Computador: PORTUGAL
Descrição:
O servidor {3D14228D-FBE1-11D0-995D-00C04FD919C1} não foi registado no DCOM dentro do tempo de espera requerido.
Para mais informações, consulte o 'Centro de ajuda e suporte' em http://go.microsoft.com/fwlink/events.asp.

3. Correção do Problema: páginas ASP não são processadas, e evento DCOM 10010 aparece no registo de eventos do sistema

http://support.microsoft.com/kb/327153/en-us/
Este erro é de resolução simples e ocorre porque as entradas dos utilizadores AUTHORITY\Authenticated NT e/ou AUTHORITY\INTERACTIVE NT (Select Users) ter sido removidas do grupo Utilizadores.
 
Resolução
Adicione estes utilizadores novamente ao grupo Utilizadores, e em seguida, reinicie Internet Information Services (IIS):
1. Clique em Iniciar , clique em Programas (Programs ), clique em Ferramentas administrativas e, em seguida, clique em Gestão de computadores para abrir a consola Gestão de computadores.
2. No painel esquerdo, expanda Utilizadores e grupos locais , e, em seguida, clique na pasta Grupos .
3. No painel direito, faça clique com o botão direito do rato sobre o grupo Utilizadores , e em seguida, clique em Propriedades .
4. Clique em Adicionar .
5. Na caixa de diálogo Seleccionar utilizadores ou grupos , localize a caixa pendente Procurar em , e em seguida, seleccione o computador local.
6. Seleccione Utilizadores autenticados , e clique em Adicionar . Seleccione Interactive , e clique em Adicionar . Clique em OK , clique em Aplicar e, em seguida, clique em Fechar para fechar as propriedades para o grupo Utilizadores.
7. No painel esquerdo, expanda Serviços e aplicações , e em seguida, clique em Serviços .
8. No painel direito, clique com o botão direito do rato IIS Admin Service , e em seguida, clique em Reiniciar .
9. Na caixa de diálogo de confirmação Reiniciar outros serviços , clique em Sim .
10.Testar
Ir ao browser, digitar http://localhost/iisstart.asp. e já está



domingo, 21 de setembro de 2008

Mapguide Maestro - Problema na Utilização de rasters formato ecw - GDAL

Estou actualmente a trabalhar com o Mapguide OS v 2.01.

Tem dado alguns problemas e bastante trabalho. A ultima luta foi a utilização de rasters em formato ecw utilizando a biblioteca gdal - http://trac.osgeo.org/gdal.

Chama-se à atenção para a licença de utilização deste formato, que segundo as ultimas informações é livre para imagens inferiores a 500MB. Mas aconcelha-se a leitura da respectiva licença

Se os valores dos “Bounds” estiverem a 10000000 é porque alguma coisa não está a correr bem na georeferenciação apesar de não ser mostrado qualquer erro.

Os ecw foram obtidos através do comando gdal_traslate na FWTools_Shell (http://trac.osgeo.org/gdal/wiki/FWTools )

O problema encontrado é o seguinte:

<Bounds>

<MinX>-10000000</MinX>

<MinY>-10000000</MinY>

<MaxX>10000000</MaxX>

<MaxY>10000000</MaxY>

</Bounds>

Na introdução ficheiros formato . ecw (rasters OSGeo.Gdal), obtive então no config os valores acima indicados.

Conversão Mr-Sid para tif

gdal_translate -a_srs EPSG:102161 -of GTiff -co "TILED=YES" D:\Dados\230_1B.sid D:\Dados\230_1B.tif

Conversão Mr-sid para ecw

gdal_translate -a_srs EPSG:102161 -of ecw D:\Dados\230_1B.sid D:\Dados\ 230_1B.ecw

Testei então a conversão para tif e ecw, com os comandos atrás descritos.

Verifiquei então que os tif eram colocado correctamente e o ecw não.

Para mais informações sobre os comandos a utilizar num determinado formato fazer:

gdalinfo –format ecw

Para saber quais os formatos possíveis de usar com esta ferramenta fWtools fazer:

gdalinfo –formats

Depois de muitos testes lá verifiquei que o ecw não assumia o Datum atribuído através do EPSG. É necessário então atribuir o datum.

Então o comando final que resolveu o problema é o seguinte.

gdal_translate -a_srs EPSG:102161 -of ecw -co "DATUM=GCS_Datum_73" D:\Dados\ 208_3A.sid D:\Dados\ 208_3A.ecw

Espero que esta solução possa ajudar alguém com o mesmo problema. Pelo menos a mim vai-me ajudar quando já não me lembrar da solução.