sábado, 22 de setembro de 2012

Visual Studio 2012 e o WEB Api

Para quem quiser baixar o Visual Studio 2012 Express, pode ir ao link abaixo:

Se tiver interessado em construir um simples exemplo e entender o funcionamento do Model, View, Controller. Como fazer funções para retornar dados(Em diferentes formatos como JSON e XML) e consumir esses na página, utilizando de JQuery.

sábado, 14 de janeiro de 2012

Visual Studio não depura quando se faz Attach a um programa

Ao tentar fazer um “Attach to Process” a um aplicativo em execução para depurá-lo, pode-se não habilitar os breakpoints. A causa mais comum é se não tiver o arquivo PDB(que tem informações de depuração) disponível no diretório. Se for seu caso, basta compilar sua solução e disponibilizar junto com o aplicativo o arquivo pdb e tentar depurar novamente.

Agora, se você tiver o PDB já no diretório atente-se ao output do Visual Studio, se há alguma mensagem como abaixo:
‘Aplicativo.exe' (Managed (v4.0.30319)): Loaded 'C:\caminho\Bin\Arquivo.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.

Para conseguir depurar, basta habilitar a opção abaixo:


Referência

quinta-feira, 12 de janeiro de 2012

Introdução ao JSON com C#

JavaScript Object Notation é um padrão para troca de informações. É fácil para homens ler e escrever e maquinas podem facilmente entender e gerar. Esse padrão é baseado no  JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON é um formato de texto que é independente de linguagem, mas usa convenções familiares a família C.

JSON é construído em 2 estruturas:
1 – Uma coleção de pares de chave(string)/valor(string, number, object, array, true, false, null)
2 – Uma lista ordenada de valores

Uma grande vantagem do JSON é que ele tem pouca verbosidade, ainda mais quando se comparado com WebService por exemplo. Vários aplicativos online, que precisam disponibilizar informações de forma simples, fazem comunicações por JSON, como exemplo há o foursquare.

Veja um exemplo de um JSON válido

Um exemplo simples de leitura JSON no C#
Crie um projeto Console e adicione referência a System.Runtime.Serialization

Adicione o código abaixo no arquivo Program.cs, fazendo alterações necessárias ao namespace:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            GoogleSearchResults g1 = new GoogleSearchResults();
            const string json = @"{""responseData"": {""results"":[{""GsearchResultClass"":""GwebSearch"",""unescapedUrl"":""http://www.cheese.com/"",""url"":""http://www.cheese.com/"",""visibleUrl"":""www.cheese.com"",""cacheUrl"":""http://www.google.com/search?q\u003dcache:bkg1gwNt8u4J:www.cheese.com"",""title"":""\u003cb\u003eCHEESE\u003c/b\u003e.COM - All about \u003cb\u003echeese\u003c/b\u003e!."",""titleNoFormatting"":""CHEESE.COM - All about cheese!."",""content"":""\u003cb\u003eCheese\u003c/b\u003e - everything you want to know about it. Search \u003cb\u003echeese\u003c/b\u003e by name, by types   of milk, by textures and by countries.""},{""GsearchResultClass"":""GwebSearch"",""unescapedUrl"":""http://en.wikipedia.org/wiki/Cheese"",""url"":""http://en.wikipedia.org/wiki/Cheese"",""visibleUrl"":""en.wikipedia.org"",""cacheUrl"":""http://www.google.com/search?q\u003dcache:n9icdgMlCXIJ:en.wikipedia.org"",""title"":""\u003cb\u003eCheese\u003c/b\u003e - Wikipedia, the free encyclopedia"",""titleNoFormatting"":""Cheese - Wikipedia, the free encyclopedia"",""content"":""\u003cb\u003eCheese\u003c/b\u003e is a food consisting of proteins and fat from milk, usually the milk of   cows, buffalo, goats, or sheep. It is produced by coagulation of the milk \u003cb\u003e...\u003c/b\u003e""},{""GsearchResultClass"":""GwebSearch"",""unescapedUrl"":""http://www.ilovecheese.com/"",""url"":""http://www.ilovecheese.com/"",""visibleUrl"":""www.ilovecheese.com"",""cacheUrl"":""http://www.google.com/search?q\u003dcache:GBhRR8ytMhQJ:www.ilovecheese.com"",""title"":""I Love \u003cb\u003eCheese\u003c/b\u003e!, Homepage"",""titleNoFormatting"":""I Love Cheese!, Homepage"",""content"":""The American Dairy Association\u0026#39;s official site includes recipes and information   on nutrition and storage of \u003cb\u003echeese\u003c/b\u003e.""},{""GsearchResultClass"":""GwebSearch"",""unescapedUrl"":""http://www.gnome.org/projects/cheese/"",""url"":""http://www.gnome.org/projects/cheese/"",""visibleUrl"":""www.gnome.org"",""cacheUrl"":""http://www.google.com/search?q\u003dcache:jvfWnVcSFeQJ:www.gnome.org"",""title"":""\u003cb\u003eCheese\u003c/b\u003e"",""titleNoFormatting"":""Cheese"",""content"":""\u003cb\u003eCheese\u003c/b\u003e uses your webcam to take photos and videos, applies fancy special effects   and lets you share the fun with others. It was written as part of Google\u0026#39;s \u003cb\u003e...\u003c/b\u003e""}],""cursor"":{""pages"":[{""start"":""0"",""label"":1},{""start"":""4"",""label"":2},{""start"":""8"",""label"":3},{""start"":""12"",""label"":4},{""start"":""16"",""label"":5},{""start"":""20"",""label"":6},{""start"":""24"",""label"":7},{""start"":""28"",""label"":8}],""estimatedResultCount"":""14400000"",""currentPageIndex"":0,""moreResultsUrl"":""http://www.google.com/search?oe\u003dutf8\u0026ie\u003dutf8\u0026source\u003duds\u0026start\u003d0\u0026hl\u003den-GB\u0026q\u003dcheese""}}, ""responseDetails"": null, ""responseStatus"": 200}";
            g1 = JSONHelper.Deserialise(json);

            foreach (Results x in g1.responseData.results)
            {
                // Anything you want to get
                Console.WriteLine(x.content);

            }
        }
    }

    public class JSONHelper
    {

        public static T Deserialise(string json)
        {
            using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
            {
                var serialiser = new DataContractJsonSerializer(typeof(T));
                return (T)serialiser.ReadObject(ms);
            }
        }
    }
    [DataContract]
    public class GoogleSearchResults
    {
        [DataMember]
        public ResponseData responseData { get; set; }
    }

    [DataContract]
    public class ResponseData
    {
        [DataMember]
        public IEnumerable results { get; set; }
    }

    [DataContract]
    public class Results
    {
        [DataMember]
        public string unescapedUrl { get; set; }

        [DataMember]
        public string url { get; set; }

        [DataMember]
        public string visibleUrl { get; set; }

        [DataMember]
        public string cacheUrl { get; set; }

        [DataMember]
        public string title { get; set; }

        [DataMember]
        public string titleNoFormatting { get; set; }

        [DataMember]
        public string content { get; set; }
    }
}

Referências:

Ferramentas:
JSON Viewer

Online JSON Viewer

JSON Validator


Restrições no ISAPI CGI

O erro

No IIS 7, você pode ter o erro HTTP 404.2 abaixo:

Se você estiver tendo o erro em português:

A página que você está solicitando não pode ser servida devido às configurações da lista de Restrições ISAPI e CGI no servidor Web.

Ou em inglês:

                    The page you requested could not be displayed because of the settings for the list of ISAPI and CGI restrictions on web server.

A solução

Você deve permitir a execução do .net framework no IIS, abra o  Gerenciador do Serviços de Informações da Internet(IIS):


Na raiz, configure as Restrições ISAPI e CGI:


Permita a execução do asp.net

Feito isso, basta tentar acessar sua aplicação/página novamente.