Arquivo

Archive for the ‘Visual Studio / .Net’ Category

“HTTP Error 404.3 – Not Found” e “HTTP Error 404.17 – Not Found”

Essa deu trabalho, mas achei as soluções.
Estou tentando rodar localmente um arquivo com extensão .svc (WCF) utilizando Windows 8 e IIS 8.

Quando tentei acessar o arquivo, recebi o erro: “HTTP Error 404.3 – Not Found”

Não percam tempo buscando soluções de outras versões de Windows ou IIS. Eu achei a solução aqui.
Basta executar o comando abaixo:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -iru

Mas então passei a tomar o erro: “HTTP Error 404.17 – Not Found”.
Para isso foi necessário seguir o procedimento desse outro site.
Basta ativar o “Http activation” nas opções do Windows (no Painel de Controle -> Programas -> Ativar ou desativar recursos do Windows). Veja a imagem abaixo:

Windows-Features-Windows-8-Net45-WCF-Http-Activation

Criando um .sln a partir de um projeto compilado em .NET (Dicas)

07/07/2013 1 comentário

Peguei um projeto para fazer como freelance que parecia bem simples e acabou se tornando mais complicado que o esperado.
A dificuldade é que o cliente tem um projeto desenvolvido em .net (framework 2.0) e só tem o projeto compilado e backups do código fonte. E só descobri isso depois de aceitar o projeto. Desafios são sempre legais, mas quando você está fazendo um “freela”, cada minuto a mais de trabalho é dinheiro perdido. Então resolvi postar minhas dificuldades de como remontar a solução no Visual Studio 2012.

Acabei encontrando alguns arquivos .sln com a solução compilada. Isso já foi bom pois tinha referência a todos os arquivos .aspx relacionados. Já os arquivos .cs estavam em uma pasta separada.

Criei uma Web Application vazia e comecei a referenciar os arquivos.

A primeira grande dica é que existiam arquivos .cs (Classes). E para que essas classes funcionem corretamente é necessário configurá-las corretamente. Clique com o botão direito na classe (você pode selecionar várias) e depois “Properties”. Na janela, as propriedades abaixo devem ser configuradas:

  • Build Action: Compile
  • Copy to Output Directory: Do not Copy

convert_to_WebApp3

Depois de passado esse desafio, tentei compilar o projeto e passei a receber inúmeros erros aonde o code-behind não encontrava os objetos que estavam nos arquivos .aspx tal como Literal, Grids, etc. Depois de muito pesquisar percebi que não haviam os arquivos .aspx.designer.cs que fazem essa “ponte” entre o .aspx e o .cs. Para gerar esses arquivos, selecione o arquivo .aspx (você pode selecionar vários ao mesmo tempo) e depois de clicar com o botão direito, selecione “Convert do Web Application”. A solução foi bem simples mas demorei algumas horas para descobrir. Segue o link que me salvou: http://www.undermyhat.org/blog/2009/07/tip-regenerate-aspx-designer-cs-files-when-corrupted/

convert_to_WebApp1 convert_to_WebApp2

O terceiro desafio foi que passei a receber o erro:
“The name ‘Resources’ does not exist in the current context”

O Resource são arquivos de configuração aonde você pode configurar várias chaves/valores e utilizar no seu sistema. E você pode criar arquivos diferentes para cada linguagem. Depois de buscar no backup do projeto, encontrei alguns arquivos .resx e inseri no projeto. Mas nada aconteceu e os erros permaneceram.
Então descobri que para funcionar é necessário criar uma pasta ” App_GlobalResources” e/ou ” App_LocalResources” e colocar seus arquivos dentro dessas pastas.
Mais explicações aqui: http://msdn.microsoft.com/en-us/library/ms227427.aspx.

Até que enfim o build funcionou!!! Valeu o trabalho no final de semana!
Abraços

 

The project type is not supported by this installation (VS 2010)

Abrindo Solutions no VS2010 (de um cliente que insiste em não atualizar o projeto para o 2012) passei a receber o erro:

The project type is not supported by this installation

Procurando na internet descobri esse post. O que resolveu o meu problema foi retirar do .csproj a tag <ProjectTypeGuids>.

C# – Validando range de CEP

Desenvolvi uma validação em C# aonde uma “Área de exclusividade” (que  tem um CEP inicial e um CEP final) não podem conflitar com outras áreas.

No primeiro momento fiz a validação abaixo:

List<AreaExclusividadeDTO> conflitList = listAreaExclusividadeDTO.Where(a =>

a.CEPInicialInt <= objAreaExclusividadeDetail.CEPInicialInt &&

a.CEPFinalInt >= objAreaExclusividadeDetail.CEPFinalInt &&

a.IdObjeto != objAreaExclusividadeDetail.IdObjeto).ToList();

Depois percebi que a validação é falha quando um range de CEP está contido dentro do outro. Por exemplo:

  • Area de exclusividade 1: 04003000 a 04003999
  • Area de exclusividade 2: 04003100 a 04003200

Nesse caso, utilizei uma validação por “Enumerable.Range” conforme abaixo:

List conflitList = listAreaExclusividadeDTO.Where(a =>
(
Enumerable.Range(a.CEPInicialInt, a.CEPFinalInt - a.CEPInicialInt).
Contains(objAreaExclusividadeDetail.CEPInicialInt) == true ||
Enumerable.Range(a.CEPInicialInt, a.CEPFinalInt - a.CEPInicialInt).
Contains(objAreaExclusividadeDetail.CEPFinalInt) == true) &&
a.IdObjeto != objAreaExclusividadeDetail.IdObjeto
).ToList();


Lembrando que o segundo parâmetro do método Enumerable.Range é um “count”, e não o CEP final.
Fiquem atentos para não passar pelo mesmo erro que eu!

Falhas Cross-site scripting (XSS)

Estou atualmente trabalhando em um projeto de vulnerabilidade. Estamos utilizando a ferramenta VeraCode (http://www.veracode.com/) e tratando inúmeros erros indicados. Um deles é o Cross-site scripting (XSS). Essa falha existe quando uma fonte de dados não confiável aceita algum scritpt. Essa falha só é valida quando o ataque consegue pegar dados de outro usuário. Por exemplo quando você vai em uma Lan House e deixa sua sessão aberta. A próxima pessoa que acessar essa máquina pode executar um javascript que rouba os dados do usuário logado.

Veja mais informações de como funciona o ataque e como prevenir sua aplicação .Net.

http://en.wikipedia.org/wiki/Cross-site_scripting
http://imasters.com.br/artigo/9879/seguranca/xss-cross-site-scripting
http://msdn.microsoft.com/pt-br/library/cc518054.aspx

 

Attach to Process no Visual Studio 2010

Já perdi a conta de quantas vezes tive que executar o comando “Attach to Process…” para debugar a aplicação que eu estava desenvolvendo no Visual Studio 2010. Depois de muito tempo, resolvi configurar a IDE com teclas de atalho para ajudar no meu dia a dia. Segue a dica em http://blogs.msdn.com/b/jannemattila/archive/2008/10/30/attaching-debugger-to-w3wp-exe-using-nice-and-easy-keyboard-shortcut.aspx

Instalando Extension Manager Private Gallery no VS 2010

30/07/2012 1 comentário

Tive que instalar novamente no VS 2010 o Private Gallery do Extension Manager. Acabei tendo que relembrar como fazer essa instalação e agora estou documentando para quem precisar.

  1. Feche o Visual Studio;
  2. Vá ao site  http://vsprivategallery.codeplex.com;
  3. Clique no botão Download (Será feito o download de um arquivo com extensão .vsix);
  4. Execute o arquivo para realizar a instalação;
  5. Após a instalação abra o Visual Studio;
  6. Clique no menu “Tools”, “Extension Manager…”
  7. Clique na aba “Installed Extensions”
  8. Procure o item “PrivateGalleryPackage” para se certificar que a extensão foi realmente instalada
Para configurar a galeria de extensões siga os seguintes passos:
  1. Abra o Visual Studio;
  2. Clique no menu “Tools”, “Options…”;
  3. Na seção “Environment”, clique em “Extension manager (private)”;
  4. Na caixa Name informe o “label” da galeria;
  5. Na caixa Source informe o endereço. Ex: “http://www.xxx.com.br/xxx&#8221;;
  6. Clique em “Add”
  7. Clique em “Ok”
  8. Reinicie o Visual Studio