Was trying to access some ports on ours development website which someone mapped it to 6000.
Port 6000 is used for X11 protocol ( and 79 is used for finger).
Internet Explorer works fine but Google Chrome and Firefox don´t.
For Firefox exists one solution :)

Solution:Unblocking/allowing ports in Firefox

Launch Firefox

Go to the address bar and type about:config. Firefox will complain about some warranty just click ok or “I’ll be careful, i promise” button

You will see the list of configuration.
Anywhere inside the list of configurations, right click and say New –> String

In the string value, enter network.security.ports.banned.override then click OK

It will now ask you what port, say 6000 (in my case) or whatever port you need to have firefox access. Click OK.

And try again to the website you want to access. These settings should remain forever.

For Chrome, we’ve got some bad news, it is not possible to access certain ports.

See Chrome banned ports here: http://src.chromium.org/viewvc/chrome/trunk/src/net/base/net_util.cc
(look under the kRestrictedPorts directive.)

Original post from http://highsecurity.blogspot.com/2009/07/google-chrome-and-mozilla-firefox-non.html
(my post is a copy with a few changes only, all rigths for the author)

Forçar modo compatibilidade com o IE7 no IE8
Wednesday, October 21st, 2009 | Author: admin

Para forçar o IE8 a usar o modo de compatibilidade com IE7
tem que adicionar a seguinte tag:



<meta http-equiv="X-UA-Compatible" content="IE=7" / >

Mas é muito chato e complicado adicionar em todas as páginas esta tag mas isto pode ser definido no IIS e até no web.config.

No IIS6
Selecrione o website que pretende, botão direito do rato e propriedades e clique na tab HTTP Headers

Depois clique em Add



Depois só faz ok.
No IIS 7
Seleccione o site pretendido depois clique em HTTP Response Headers

Ao  clicar ira aparecer a seguinte imagem e é só preencher os valores

Também pode fazer isto adicionando as seguintes linhas no web.config ( que é o que faz o IIS 7)

Esta solução foi retirada de: http://weblogs.asp.net/joelvarty/archive/2009/03/23/force-ie7-compatibility-mode-in-ie8-with-iis-settings.aspx

WebServices Autenticação SOAP Header
Tuesday, October 13th, 2009 | Author: admin

Sempre que estamos a falar de webservices surge uma questão.

E a segurança?

Como vou autenticar os utilizadores?


 

Uma das formas de fazer isso é com Soap Headers.


 

Vamos por passos.

1º Crie a seguinte classe( com o nome que quiser )

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Web.Services.Protocols;

using System.Security.Cryptography;

 

///
<summary>

/// Summary description for AuthHeader

///
</summary>

public
class
AuthHeader:SoapHeader

{

   

        public
string Username;


public
string Password;

 


public
string decrypt(string data)

{

System.IO.MemoryStream msDecrypt = null;


CryptoStream csDecrypt = null;

System.IO.StreamReader srDecrypt = null;

 

System.Security.Cryptography.RijndaelManaged aesAlg = null;

 


string plaintext = null;


try

{


// Create a RijndaelManaged object


// with the specified key (IV parameter is obmitted because of ECB CipherMode).

aesAlg = new System.Security.Cryptography.RijndaelManaged();

aesAlg.Key = System.Text.Encoding.UTF8.GetBytes(“01030123012390129012901A”);

aesAlg.Mode = CipherMode.ECB;


// set PaddingMode.Zeros in order to use the same padding mode as in flash actionscript class

aesAlg.Padding = PaddingMode.Zeros;

 


// Create a decrytor to perform the stream transform.


ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

 


// Create the streams used for decryption.

msDecrypt = new System.IO.MemoryStream(Convert.FromBase64String(data));

csDecrypt = new
CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);

srDecrypt = new System.IO.StreamReader(csDecrypt);

 


// Read the decrypted bytes from the decrypting stream


// and place them in a string.

plaintext = srDecrypt.ReadToEnd();


return plaintext.Replace(“\0″, “”);

}


finally

{


// Clean things up.


// Close the streams.


if (srDecrypt != null)

srDecrypt.Close();


if (csDecrypt != null)

csDecrypt.Close();


if (msDecrypt != null)

msDecrypt.Close();

 


// Clear the RijndaelManaged object.


if (aesAlg != null)

aesAlg.Clear();

}

 

}

 

 

 

 

 

}

 

2º No seu webservice adicione as seguintes linhas

public
class
SeuWebsercice : System.Web.Services.WebService

{


public
AuthHeader Authentication;

….

E em cada método
adicionar

[SoapHeader("Authentication", Required = true)]

Exemplo:

[SoapHeader("Authentication", Required = true)]

[WebMethod]


public
bool xptoMethod()

{

 

 

//validateUser é apenas exemplo.. podera ser um login
if(!System.Web.Security.Membership.ValidateUser(Authentication.decrypt(Authentication.Username),

Authentication.decrypt(Authentication.Password)))

 

{


return
false;

}

 

NOTA: neste exemplo é necessário efectuar a validação em cada metodo, no entando o melhor (dependendo do que se pretende) será guardar em sessão se o user ta autenticado

 

No lado do cliente:

Criar a classe de encriptação


private
static
string Encrypt(string input)

{

 

System.Security.Cryptography.RijndaelManaged aesAlg = null;

 


// Create a RijndaelManaged object


// with the specified key (IV parameter is obmitted because of ECB CipherMode).

aesAlg = new System.Security.Cryptography.RijndaelManaged();

 

//IMPORTANTE: esta chave ter que ser a mesma

aesAlg.Key = System.Text.Encoding.UTF8.GetBytes(“01030123012390129012901A”);

aesAlg.Mode = CipherMode.ECB;


// set PaddingMode.Zeros in order to use the same padding mode as in flash actionscript class

aesAlg.Padding = PaddingMode.Zeros;

 


// Create a decrytor to perform the stream transform.


ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);


byte[] toEncrypt = System.Text.Encoding.UTF8.GetBytes(input);

System.IO.MemoryStream msEncrypt = new System.IO.MemoryStream();


CryptoStream csEncrypt = new
CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);

 


// toEncrypt = textConverter.GetBytes(input);

 

csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);

csEncrypt.FlushFinalBlock();

 


// return msEncrypt.ToArray();


return
Convert.ToBase64String(msEncrypt.ToArray());

}

 

Na classe onde ira ser chamado o webservice:

static WebSync.Sync websync = new WebSync.Sync();


static WebSync.AuthHeader aut = new WebSync.AuthHeader();

aut.Username = Encrypt(config.AppSettings.Settings["username"].Value);

aut.Password = Encrypt(config.AppSettings.Settings["password"].Value);

websync.AuthHeaderValue = aut;

 

O resto ( a chamada ao metodo) não é preciso alterar nada..
ex: webSync.xpto();

Imaginem que têm uma base dados ( o mais provável é não precisarem de imaginar porque têm mesmo lol )
em que várias tabelas possuem um campo chamado “data_criacao” e precisam de actualizar esse campo em todas as tabelas mas não sabem sequer que tabelas têm esse campo “data_criacao”.
Vamos por passos.
1º - Script para achar esse campo
    SELECT t.name AS table_name,
    SCHEMA_NAME(schema_idAS schema_name,
    c.name AS column_name
    FROM sys.tables AS t
    INNER JOIN sys.columns c ON t.OBJECT_ID c.OBJECT_ID
    WHERE c.name LIKE ‘%data_criacao%’
   ORDER BY schema_nametable_name;

Este script ira retornar o nome da tabela, o schema e nome da coluna (que terá de ser o nome que vocês pesquisaram :D )

2º Agora que já sabem onde estão ( mas não precisam de saber :) ) vamos a segunda parte.
O script para efectuar o update. 
Usaremos o script acima, com umas pequenas alterações, e vamos guardar o resultado numa variável e depois executamos essa variável
  begin transaction
declare @query varchar(max)
set @query=
SELECT @query=@query+‘update ‘ +t.name+’ set data_criacao=getdate() where data_criacao is null;’
–SCHEMA_NAME(schema_id) AS schema_name,
–c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE ‘%data_criacao%’
ORDER BY t.name;
exec(@query)
–commit

Não esquecer de verificar se esta tudo ok, e executar o commit que esta comentado…
Ter em atenção o tamanho máximo da varchar.. se tiverem muitas tabelas poderá não dar.. dúvido que tenham assim tantas..mas se tiverem insiram o resultado numa tabela temporária e para cada registo façam o exec :)


Qualquer dúvida, sugestão, correcção é só comentar :)
Abraços

O instalador não pode acessar a chave do Registro
Tuesday, September 22nd, 2009 | Author: admin




Meu irmão comprou uma multifunções HP e estava com este problema ao tentar instalar.
Pesquisando na net encontrei esta solução muito boa 
Soluções retiradas do Web Consulte




O instalador não pode acessar a chave do Registro

Veja como resolver este problema abaixa na instalação de impressoras HP:



A mensagem de erro diz o seguinte:

“O instalador não pode acessar a chave do Registro. Certifique-se de que o instalador tenha acesso ao Registro e clique em repetir para continuar a instalação.”

Chave do Registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
Fabricante: Microsoft



SOLUÇÃO 1:
1) Copiar o CD para o disco Rigido
2) Editar o arquivo: autorun.inf e alterar a seguinte linha (vai encontrar 3 vezes estas linhas)
Key=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
Condition=NotWriteable
Action=AutoFix
BlockIfFail=Yes

Deve alterar o BlockIfFail=Yes para BlockIfFail=No
Ao tentar instalar a partir (do disco rigido) vai ocorrer o mesmo erro, mas vai permitir continuar a instalação.

SOLUÇÃO 2:
Tente também utilizar as seguintes combinações de teclas CRTL + SHIFT e clicar em CANCELAR

Category: Uncategorized  | Tags: ,  | One Comment


Recentemente tive a necessidade de adicionar uma coluna a minha tabela já com registos.

Essa coluna não era uma chave mas não podia usar auto incremento e não permite nulls..

Essa coluna é um id unico entre duas tabelas que não têm relação, uma de alunos e outra de adultos na qual preciso de um unico id, logo a chave primária não server ( como são tabelas diferentes podem ser repetidos)

Exemplo:

Tabela Aluno:                  

Id_aluno Nome
1200 AAA
1201 BBB
Id_adulto Nome
5000 Adulto1
6000 Adulto2

 (são duas tabelas mas ficaram mal formatadas no blogger …..)

Agora o pretendito é ter uma coluno com um id unico entre estas duas tabelas, como já havia dados na minha tabela tinha que fazer update. Primeiro na tabela alunos depois com o MAX desse passar para a sequencia para a tablea adulto para ficar assim

Id_aluno Nome Unique_id
1200 AAA 1
1201 BBB 2
Id_adulto Nome Unique_id
5000 Adulto1 3
6000 Adulto1 4

(são duas tabelas mas ficaram mal formatadas no blogger …..)

Após correr o script que segue, é necessário criar um trigger que no insert veja qual o maior unique id entre as duas tabelas, some 1 e insirar esse valor ainda não tenho o tirgger concluido pois no meu caso é mais complexo que este aqui se precisarem deixem um post e deixo aqui o select:

select
MAX(m.unique_id)

     from
(

     select
MAX(unique_id)
as unique_id

     from aluno

     union all


select
MAX(unique_id)as unique_id

     from adulto

)
as m

Script alteração e update:

/*

#################################################                                                    #

# Script Criação campo unico entre aluno e    #

# adulto                            #

# Autor: Marcos Alves                    #

# Date: 15-09-2009                    #

# Version: 1.0                        #

#################################################

*/

begin
transaction

– adicionar coluna unique_id na tabela aluno permitindo null

ALTER
TABLE Aluno

ADD unique_id int

GO

IF
@@ERROR
<> 0


IF
@@TRANCOUNT
= 1 ROLLBACK
TRANSACTION

GO

IF
@@TRANCOUNT
= 1

BEGIN


PRINT
‘dbo.Aluno Table Alter Successfully’


COMMIT
TRANSACTION

END
ELSE

BEGIN


PRINT
‘Failed To Alter dbo.Aluno Table’

END

GO

– adicionar coluna unique_id na tabela adulto permitindo null

begin
transaction

ALTER
TABLE adulto

ADD unique_id int

GO

IF
@@ERROR
<> 0


IF
@@TRANCOUNT
= 1 ROLLBACK
TRANSACTION

GO

IF
@@TRANCOUNT
= 1

BEGIN


PRINT
‘dbo.adulto Table Alter Successfully’


COMMIT
TRANSACTION

END
ELSE

BEGIN


PRINT
‘Failed To Alter dbo.adulto Table’

END

GO

– actualizar os registos da tabela aluno

begin
transaction

DECLARE @counter int

SET @counter = 0

UPDATE Aluno SET @counter = unique_id = @counter +1 –- aqui mágiaJ

GO

IF
@@ERROR
<> 0


IF
@@TRANCOUNT
= 1 ROLLBACK
TRANSACTION

GO

IF
@@TRANCOUNT
= 1

BEGIN


PRINT
‘dbo.Aluno Table Update Successfully’


COMMIT
TRANSACTION

END
ELSE

BEGIN


PRINT
‘Failed To Update dbo.Aluno Table’

END

GO

– actualizar os registos da tabela adulto a partir do max

begin
transaction

DECLARE @counter int

Select @counter=MAX(unique_id)
from student

UPDATE Adulto SET @counter = unique_id = @counter +1 –- de novo magiaJ

GO

IF
@@ERROR
<> 0


IF
@@TRANCOUNT
= 1 ROLLBACK
TRANSACTION

GO

IF
@@TRANCOUNT
= 1

BEGIN


PRINT
‘dbo.Adulto Table Update Successfully’


COMMIT
TRANSACTION

END
ELSE

BEGIN


PRINT
‘Failed To Update dbo.Adulto Table’

END

GO

–alterar table aluno campo unique_id not null

begin
transaction

ALTER
TABLE Aluno ALTER
COLUMN unique_id int
NOT
NULL

GO

IF
@@ERROR
<> 0


IF
@@TRANCOUNT
= 1 ROLLBACK
TRANSACTION

GO

IF
@@TRANCOUNT
= 1

BEGIN


PRINT
‘dbo.Aluno Table Alter not null Successfully’


COMMIT
TRANSACTION

END
ELSE

BEGIN


PRINT
‘Failed To Alter not null dbo.Aluno Table’

END

GO

–alterar table adulto campo unique_id not null

begin
transaction

ALTER
TABLE Adulto ALTER
COLUMN unique_id int
NOT
NULL

GO

IF
@@ERROR
<> 0


IF
@@TRANCOUNT
= 1 ROLLBACK
TRANSACTION

GO

IF
@@TRANCOUNT
= 1

BEGIN


PRINT
‘dbo.Adulto Table Alter not null Successfully’


COMMIT
TRANSACTION

END
ELSE

BEGIN


PRINT
‘Failed To Alter not null dbo.Adulto Table’

END

go

E é isto J espero que tenha ajudado e qualquer dúvida é só commentar J

Abraços

Category: Uncategorized  | Tags: ,  | Leave a Comment

Precisa de saber a data em que instalou o windows? :)

É simples :)

Menu Iniciar depois em executar escreva cmd para abrir a consola de comandos,

na consola escreva systeminfo.

Vai ser listada varias configurações, a data encontra-se no início é só fazer scroll :)

Do you need to know the when windows was installed in your pc?

Easy:D
Start Menu then click Run, type cmd to open command console.
In the console type systeminfo. One of the infos is the date of installation just scroll to the beginning :)

 

Finalmente conseguimos resolver o erro das transacções via MSDTC não estarem a funcionar no nosso ambiente.

Deixo aqui uma solução:

Sempre que ocorrer um erro nas transacções verificar os seguintes pontos:

1.    Se o MSDTC esta activado nas duas máquinas, cliente (onde correr a web/app) e o servidor

2.    Verificar se as configurações estão correctas

3.    Verificar se as firewalls não estão a bloquear os pedidos

4.    Verificar se as máquinas conseguem “pingar” uma a outra por NetBios ( pelo nome da máquina)

Neste caso o problema era o ponto 4, por alguma razão que não conseguimos verificar o porque, a minha
máquina conseguia pingar o servidor,mas o servidor não conseguia pingar a minha pois o IP estava a ser associado a outra máquina.

Solução:

Remover o registo do “Host A” no DNS Server para a máquina que esta a ter o erro,(no meu caso por algum motivo não estava a renovar
o IP no registo)

A seguir foi  necessário efectuar um reset ao router e efecutar um ipconfig /release seguido de um ipconfig /renew bem como um
ipconfig /flushdns no servidor para limpar o dns e adquirir o ip correcto.

To add filter options to a gridview you can do something like this.
I’m using sqldatasource and have one dropdownlist with the Columns we want to filter and one text box with ther search criteria.

SqlDataSource1.FilterExpression = DropDownListField.SelectedValue + ” like ‘%” + TextBoxSearch.Text + “%’”;

then i save the criteria to an session variable to use in other events like paging…

enjoy:)

Portuguese Version-
Para adicionar opções para filtrar um gridview que você pode fazer algo assim.
Estou usando o SqlDataSource e uma dropdownlist com as colunas que queremos para filtrar e uma caixa de texto que existem critérios de pesquisa.

SqlDataSource1.FilterExpression = DropDownListField.SelectedValue + “like ‘%” + TextBoxSearch.Text + “%’”;

então eu salvar os critérios para uma variável de sessão para usar em outros eventos, como paginação …

textbox numeric validation
Monday, August 24th, 2009 | Author: admin

Works in Firefox and IE7, IE8
in code-behind put add this attribute to yout textbox
yourTextBox.Attributes.Add("onkeypress", "var key; if(window.event){ key = event.keyCode;}else if(event.which){ key = event.which;} return (key == 45 || key == 13 || key == 8 || key == 9 || key == 189 || (key >= 48 && key <= 58) )");

Firefox recognize event.wich :)