locked
Publicar Projeto Silverlight feito no BLEND 3 na WEB RRS feed

  • Pergunta

  • Pessoal, Tudo bem?

    Sou novo no silverlight, gostaria de tirar uma dúvida que já tem algumas discussoes nesse FóRUM mas confesso que eu nao entendi como proceder.

    Eu criei um projeto em Silverlight WebAplication. Notei que após a compilaçao ela cria dois diretorios, um deles é para Web.
    Dentro dessa pasta .Web Existem 3 arquivos: default.html, favicon.ico e silverlight.js, existe também uma pasta chamada: ClientBin/meuprojeto.xap.

    Eu quero publicar esse projeto num site que assinei (kingHost - me garantiram que funciona silverlight). O que exatamente eu devo mandar pro servidor remoto? Devo manter exatamente da forma que esta a pasta ClientBin? Estou com muita dúvida, estou testando esse projeto e gostaria muito de saber como publicar e funcionar isso.

    Atualmente esta assim:
    www/default.html
    www/favicon.ico
    www/silverlight.js
    www/CrossDomain.XML
    www/ClientAccessPolicy
    www/ClientBin/MeuProjeto.XAP

    onde www parece ser o meu diretório principal.

    Se alguem tiver uma dica, ficarei grato.


    ---------------------------------------------------------------------------------------------------------------------------------------------------
    Detalhes dos erros da página da Web

    Agente de Usuário: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)
    Carimbo de data/hora: Tue, 8 Sep 2009 13:16:05 UTC


    Mensagem: Unhandled Error in Silverlight 3 Application
    Code: 2104   
    Category: InitializeError      
    Message: 2104 An error has occurred.    

    Linha: 111
    Caractere: 13
    Código: 0
    URI: http://msrfuture.kea.kinghost.net/default.html
    ----------------------------------------------------------------------------------------------------------------

     

    terça-feira, 8 de setembro de 2009 13:19

Respostas

  • è muito simples, você só vai usar o arquivo .XAP, o .XAP é como se fosse o .SWF do flash, no caso o seu arquivo xap é o "www/ClientBin/MeuProjeto.XAP", para adicionar eles em sua pagina adicione os seguintes codigos


    Debuger do silverlight em JS, coloque entre o <head>, não altere nada...

        <script type="text/javascript">
            function onSilverlightError(sender, args) {
                var appSource = "";
                if (sender != null && sender != 0) {
                  appSource = sender.getHost().Source;
                }
                
                var errorType = args.ErrorType;
                var iErrorCode = args.ErrorCode;
    
                if (errorType == "ImageError" || errorType == "MediaError") {
                  return;
                }
    
                var errMsg = "Unhandled Error in Silverlight Application " +  appSource + "\n" ;
    
                errMsg += "Code: "+ iErrorCode + "    \n";
                errMsg += "Category: " + errorType + "       \n";
                errMsg += "Message: " + args.ErrorMessage + "     \n";
    
                if (errorType == "ParserError") {
                    errMsg += "File: " + args.xamlFile + "     \n";
                    errMsg += "Line: " + args.lineNumber + "     \n";
                    errMsg += "Position: " + args.charPosition + "     \n";
                }
                else if (errorType == "RuntimeError") {           
                    if (args.lineNumber != 0) {
                        errMsg += "Line: " + args.lineNumber + "     \n";
                        errMsg += "Position: " +  args.charPosition + "     \n";
                    }
                    errMsg += "MethodName: " + args.methodName + "     \n";
                }
    
                throw new Error(errMsg);
            }
        </script>

    Em seguinda adicione em qualquer lugar de sua pagina, em um <div> ou <table>, qualquer lugar dentro das tags <body> o seguinte codigo, note que você deve alterar somente uma parte, onde diz "SEU ARQUIVO.XAP", escreva ali o local onde se encontra e o nome do seu .xap, se botar somente o nome, o seu arquivo .xap tem que estar na mesma opasta da pagina q está chamando ele......


     <form id="form1" runat="server" style="height:100%">  
          <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
                     \\CAMINHO PARA O SEU .XAP
    		  <param name="source" value="SEU ARQUIVO .XAP"/>
                      \\
    		  <param name="onError" value="onSilverlightError" />
    		  <param name="background" value="white" />
    		  <param name="minRuntimeVersion" value="3.0.40624.0" />
    		  <param name="autoUpgrade" value="true" />		
    	    </object>
        </form>

    Então, somente envie para o servidor o seu arquivo .xap e adicione essas linhas de codigo na pagina q queira mostrar ele e pronto.

    Espero ter ajudado.
    terça-feira, 8 de setembro de 2009 23:12

Todas as Respostas

  • è muito simples, você só vai usar o arquivo .XAP, o .XAP é como se fosse o .SWF do flash, no caso o seu arquivo xap é o "www/ClientBin/MeuProjeto.XAP", para adicionar eles em sua pagina adicione os seguintes codigos


    Debuger do silverlight em JS, coloque entre o <head>, não altere nada...

        <script type="text/javascript">
            function onSilverlightError(sender, args) {
                var appSource = "";
                if (sender != null && sender != 0) {
                  appSource = sender.getHost().Source;
                }
                
                var errorType = args.ErrorType;
                var iErrorCode = args.ErrorCode;
    
                if (errorType == "ImageError" || errorType == "MediaError") {
                  return;
                }
    
                var errMsg = "Unhandled Error in Silverlight Application " +  appSource + "\n" ;
    
                errMsg += "Code: "+ iErrorCode + "    \n";
                errMsg += "Category: " + errorType + "       \n";
                errMsg += "Message: " + args.ErrorMessage + "     \n";
    
                if (errorType == "ParserError") {
                    errMsg += "File: " + args.xamlFile + "     \n";
                    errMsg += "Line: " + args.lineNumber + "     \n";
                    errMsg += "Position: " + args.charPosition + "     \n";
                }
                else if (errorType == "RuntimeError") {           
                    if (args.lineNumber != 0) {
                        errMsg += "Line: " + args.lineNumber + "     \n";
                        errMsg += "Position: " +  args.charPosition + "     \n";
                    }
                    errMsg += "MethodName: " + args.methodName + "     \n";
                }
    
                throw new Error(errMsg);
            }
        </script>

    Em seguinda adicione em qualquer lugar de sua pagina, em um <div> ou <table>, qualquer lugar dentro das tags <body> o seguinte codigo, note que você deve alterar somente uma parte, onde diz "SEU ARQUIVO.XAP", escreva ali o local onde se encontra e o nome do seu .xap, se botar somente o nome, o seu arquivo .xap tem que estar na mesma opasta da pagina q está chamando ele......


     <form id="form1" runat="server" style="height:100%">  
          <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
                     \\CAMINHO PARA O SEU .XAP
    		  <param name="source" value="SEU ARQUIVO .XAP"/>
                      \\
    		  <param name="onError" value="onSilverlightError" />
    		  <param name="background" value="white" />
    		  <param name="minRuntimeVersion" value="3.0.40624.0" />
    		  <param name="autoUpgrade" value="true" />		
    	    </object>
        </form>

    Então, somente envie para o servidor o seu arquivo .xap e adicione essas linhas de codigo na pagina q queira mostrar ele e pronto.

    Espero ter ajudado.
    terça-feira, 8 de setembro de 2009 23:12
  • Jonatas, Obrigado pela dica, mas nao funcionou cara. Tentei a informaçao que vc passou ai em cima mas fiquei em duvida, porque no meu html já tem algo parecido, veja exemplo. Mudei os campos de Source igual vc falou mas continuar sem aparecer no site. Onde estou hospedando é King Host, nao sei se vc conhece o provedor. Mas parece que tem suporte sim, inclusive já ativei o ASP.nET 3.5. Depois que mudei o caminho para \ (barra invertida) párou de dar o erro na páginas, mas ela nao carrega o .xap.

    Veja ai.. vc tem msn? Se me manda ai, de repente vc entre no ftp que tenho pra dar uma olhada quando tiver um tempo.
    Grato por momento.

    Veja como esta atualmente meu default.html


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <!-- saved from url=(0014)about:internet -->
    <head>
        <title>FormataSite</title>

        <style type="text/css">
        html, body {
         height: 100%;
         overflow: auto;
        }
        body {
         padding: 0;
         margin: 0;
        }
        #silverlightControlHost {
         height: 100%;
        }
        </style>
        <script type="text/javascript" src="Silverlight.js"></script>
        <script type="text/javascript">
            function onSilverlightError(sender, args) {
           
                var appSource = "";
                if (sender != null && sender != 0) {
                    appSource = sender.getHost().Source;
                }
                var errorType = args.ErrorType;
                var iErrorCode = args.ErrorCode;
               
                if (errorType == "ImageError" || errorType == "MediaError")
                    return;
               
                var errMsg = "Unhandled Error in Silverlight 3 Application " +  appSource + "\n" ;

                errMsg += "Code: "+ iErrorCode + "    \n";
                errMsg += "Category: " + errorType + "       \n";
                errMsg += "Message: " + args.ErrorMessage + "     \n";

                if (errorType == "ParserError")
                {
                    errMsg += "File: " + args.xamlFile + "     \n";
                    errMsg += "Line: " + args.lineNumber + "     \n";
                    errMsg += "Position: " + args.charPosition + "     \n";
                }
                else if (errorType == "RuntimeError")
                {          
                    if (args.lineNumber != 0)
                    {
                        errMsg += "Line: " + args.lineNumber + "     \n";
                        errMsg += "Position: " +  args.charPosition + "     \n";
                    }
                    errMsg += "MethodName: " + args.methodName + "     \n";
                }

                throw new Error(errMsg);
            }
        </script>
    </head>

    <body>
        <!-- Runtime errors from Silverlight will be displayed here.
     This will contain debugging information and should be removed or hidden when debugging is completed -->
     <div id='errorLocation' style="font-size: small;color: Gray;">

     </div>

        <div id="silverlightControlHost">
      <object data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%">
       <param name="source" value="\www\ClientBin\FormataSite.xap"/>
       <param name="onerror" value="onSilverlightError" />
       <param name="background" value="silver" />
       <param name="minRuntimeVersion" value="3.0.40624.0" />
       <param name="autoUpgrade" value="true" />
       <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration: none;">
            <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>
       </a>
      </object><iframe id='_sl_historyFrame' style='visibility:hidden;height:0;width:0;border:0px'></iframe></div>
    </body>
    </html>


    Link alternativo do site: http://msrfuture.kea.kinghost.net/default.html

    terça-feira, 15 de setembro de 2009 13:05
  • E ae Micael...
    voce já tentou por o caminho "ClientBin/MeuProjeto.xap"?? tente com e sem o "www", acho que nao precisa tb...
    nao tenho certeza, mas acho que a barra nao é invertida... qual o erro que estava dando antes??
    nao podia ser um erro no silverlight? webservice ou algo do genero?

    Outra coisa, quando publiquei eu simplismente copiei a parte Web do meu projeto para o servidor...
    Funcionou tranquilo.. voce criou o projeto no Blend ou primeiro no VS??
    Uma vez q inventei de criar no blend falto umas paginas hehehe... agora sempre crio antes no VS e depois edito no blend, dai tem uma pagina bem certinha, com tudo configurado que eh soh copiar =)

    Att,
    Fernando Marostega
    • Editado Nandoviski terça-feira, 15 de setembro de 2009 14:30 Complementar
    terça-feira, 15 de setembro de 2009 14:27
  • exatamente, o caminho está errado, tire o www deixe soh \ClientBin\FormataSite.xap, e cara programação é a base de testes, quase sempre não funciona na primeira vez, você soh vai aprender de verdade se for testando modificando, velho ditado do dar o peixe e incinar a pescar ;) soh uma dica, abraço !!!
    • Sugerido como Resposta Jonatas Freitas terça-feira, 15 de setembro de 2009 14:36
    terça-feira, 15 de setembro de 2009 14:36
  • É verdade, o Jonatas disse tudo hehehe...
    o negocio é i fazendo e testando, eh uma manera muito boa de se aprender... com o tempo pega o jeito =)
    terça-feira, 15 de setembro de 2009 17:51
  • ahhh eh tem essa questão tb, se o tue silverlight tiver com erro de codigo, nao aparece mesmo.....verifique isso tb
    terça-feira, 15 de setembro de 2009 18:04
  • Pessoal valeu pelas dicas, depois de tanto testar, resolvi assinar a locaweb. Foi simples, apenas publiquei o projeto e ponto final, a aplicação funcionou corretamente. Agora pra acessar os servicos, realmente precisa ter os dois arquivos citados no diretorio root. Obrigado pela dicas.
    quinta-feira, 14 de janeiro de 2010 19:35