Passo a passo – AppFabric-Enabled WCF Data Service

6 08 2010

Este post foi copiado e traduzido do blog de Ron Jacobs

Neste explicação passo a passo eu vou lhe mostrar como usar o AppFabric-Enabled WCF Data Service (C#) template para o Visual Studio 2010 para melhorar o seu WCF Data Services, fornecendo

  • Monitoramento de eventos e erros ao AppFabric Data Store
  • Eliminando a necessidade de usar a extensão .Svc no seu URI

Requisitos

Passo 1 – Criar um Aplicativo da Web
  1. Inicie o Visual Studio 2010
  2. Selecione Arquivo / Projeto Novo
  3. Escolha um Web Application Template – para esse exemplo eu usei Empty Web Application
Passo 2 – Adicionar um modelo de dados ADO.NET Entity
  1. Para o meu banco de dados estou usando o banco de dados de exemplo AdventureWorksLT para SQL Server 2008r2
  2. Botão direito do mouse em seu projeto e selecione Add / New Item …
  3. Selecione o ADO.NET Entity Data Model modelo
  4. Nome do modelo AdventureWorks.edmx
  5. Selecione Gerar Banco de Dados
  6. Conecte-se AdventureWorksLT e utilizar as configurações padrão
  7. Selecione todas as tabelas, marcando a caixa Tables
Passo 3 – Adicionar uma AppFabric-Enabled WCF Data Service
  1. Botão direito do mouse em seu projeto e selecione Add / New Item …
  2. Selecione Modelos Online
  3. Na caixa tipo de pesquisa AppFabric
  4. Selecione o AppFabric-Enabled WCF Data Service (C #) Template
  5. Nome que AdventureWorks.svc

    Add New Item AppFabric-enabled WCF Data Service C#
  6. Clique em Install para instalar o template no seu computador
Código Passo 4 – Modificar o modelo

Nós adicionamos tarefas TODO no modelo para guiá-lo através de tarefas que você precisa fazer para tornar seu serviço pronto

  1. Substituir classe [[nome]] com AdventureWorksLTEntities
  2. Modificar o código SetEntitySetAccessRule como mostrado para todas as entidades (“*”)
  3. Se você quiser usar uma rota diferente, você pode definir que, como bem
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
    // Enable read only access to all entities
    config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
    config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;

    RouteTable.Routes.Add(
        new ServiceRoute("AdventureWorks", new DataServiceHostFactory(), typeof(AdventureWorks)));
}
Passo 5 – Modificar o web.config
  1. Em AdventureWorks.svc.cs expandir #region Sample Config with End-To-End Monitoring enabled”
  2. Selecione o XML comentado e tire-o (Ctrl + K, Ctrl + U)
  3. Copie-o para o clipboard
  4. Comentário-lo novamente (Ctrl + K, Ctrl + C)
  5. Abra web.config
  6. Cole o XML dentro da tag <configuration>
<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    <diagnostics etwProviderId="830b12d1-bb5b-4887-aa3f-ab508fd4c8ba">
      <endToEndTracing propagateActivity="true" messageFlowTracing="true" />
    </diagnostics>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <etwTracking profileName="EndToEndMonitoring Tracking Profile" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="UrlRoutingModule"/>
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </modules>
    <handlers>
      <add
      name="UrlRoutingHandler"
      preCondition="integratedMode"
      verb="*" path="UrlRouting.axd"
      type="System.Web.HttpForbiddenHandler, System.Web,
                      Version=2.0.0.0, Culture=neutral,
                      PublicKeyToken=b03f5f7f11d50a3a"/>
    </handlers>
  </system.webServer>
</configuration>
Passo 6 – Execute o serviço no IIS

Para ver os eventos no Windows Server AppFabric que você precisa para implantar o projeto da Web para o IIS ou modificar seu projeto para sediar a solução no local do servidor IIS. Para este exemplo vou modificar o projecto de acolhimento com o servidor IIS local. Nota: Isto requer que você executar Visual Studio como

Administrador

  1. Se você não estiver executando o Visual Studio como Administrador, sair e reiniciar o Visual Studio como administrador e recarregar seu projeto. Para mais informações, consulte Usando o Visual Studio com o IIS 7
  2. Botão direito do mouse sobre a WebApplication e selecione propriedades
  3. Vá até a aba Web
  4. Verifique Use Local IIS Web Server e clique em Create Virtual Directory
  5. Pressione Ctrl + Shift + S para salvar as configurações do projeto (depuração não irá salvá-los)
  6. Open AdventureWorks.svc.cs
  7. Pressione F5 para depurar
  8. O serviço será aberto no depurador e apresentação de documento de serviço
    Service working
  9. Retire a extensão. Svc da URI e tente novamente. Funcionará sem a extensão. Svc na URI.
    Se isto não está funcionando para você ver System.Web.Routing RouteTable não funciona com o IIS?
    Se você quiser desativar o URI com o svc extensão. (E eliminar o svc arquivo.) Ver este post
  10. Se você ver um erro no log de eventos (Login failed for user ‘IIS AppPool \ DefaultAppPool. Motivo: Falha ao abrir o banco de dados especificado explicitamente. [CLIENT: <local máquina>]) Você precisa conceder permissão para IIS usuário para acessar o banco de dados
USE [AdventureWorksLT]
GO
CREATE USER [IIS USERS] FOR LOGIN [BUILTIN\IIS_IUSRS]
GO
USE [AdventureWorksLT]
GO
EXEC sp_addrolemember N'db_datareader', N'IIS USERS'
GO
Passo 7 – Ver Eventos em AppFabric
  1. Iniciar Gerenciador do IIS
  2. Abra o Dashboard AppFabric
  3. Clique em um dos links para WCF
  4. Botão direito do mouse em um evento e selecione Exibir todos os eventos relacionados para ver eventos detalhados

AppFabric Dashboard

Tracked Events