Ao executar um componente feito em Silverlight que acesse um dados externo como um WebService ou um componente WCF você poderá receber uma mensagem totalmente insignificante, como abaixo:
"Message: Unhandled Error in Silverlight Application An exception occurred during the operation, making the result invalid. Check InnerException for exception details. at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
at SilverlightApplication1.MeuWS.RetornaPessoaCompletedEventArgs.get_Result()
at SilverlightApplication1.MainPage.X_RetornaPessoaCompleted(Object sender, RetornaPessoaCompletedEventArgs e)
at SilverlightApplication1.MeuWS.WSExemplo1SoapClient.OnRetornaPessoaCompleted(Object state)
Line: 1
Char: 1
Code: 0"
Caso voce acesse o InnerException como sugerido na mensagem receberá um erro de access denied por não haver manifesto de confiança cross-domain ou cross-forest.
Este erro acontece porque o Silverlight ao acessar um componente externo precisa que seja confiado para uso naquela URL.
O arquivo ClientAccesspolicy.xml é muito simples e deve estar no mesmo site que o webservice (asmx) está:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="http://*" />
<domain uri="https://*" />
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
Note que nas linha 5 inicia uma relação dos sites que podem acessar o webservice em que este arquivo está hosteado. No exemplo acima estamos permitindo qualquer site de utilizar o nosso webservice, mas obviamente você irá montar sua própria lista.
Muitas vezes precisamos criar boot por pendrive, como por exemplo, para instalar o SO em um netbook.
Entre com command prompt, se for no Windows Vista ou no Windows 7 entre como administrador (botão direito no atalho "Abrir como Administrador"):
DiskPart (ferramenta de manutenção e configuração de disco)
Listdisk (lista os discos fisicos da maquina)
Select disk <Numero> (seleciona o pendrive, CUIDADO PARA NÃO ESCOLHER O DISCO ERRADO)
Clean (apaga todos os dados do disco)
Create partition primary (cria a partição com todo o tamanho do pendrive)
Select partition 1 (seleciona a partição que acabou de ser criada)
Active (ativa a partição criada)
Format fs=ntfs (formata o pendrive)
Assign (atribui uma letra ao pendrive no Windows Explorer)
Exit (sai do utilitário)
Não feche ainda o command prompt, verifique com qual letra o pendrive ficou no Windows Explorer.
Volte ao command prompt e acesse o DVD de instalação do Windows Vista ou do Windows 7 e acesse a pasta boot:
cd\boot (diretório de boot do DVD de instalação)
bootsect /nt60 <Letra>: (copia os arquivos de boot para um windows versão 6.0 ou superior, no caso o Vista ou Windows 7)
Pronto, agora configure o BIOS de sua maquina para dar boot pelo Pendrive ou use a tecla <F8> que em muitos BIOS mostra a lista de boot.
A um tempo atrás comentei que o Windows 7 e o Windows 2008 permitiam o uso nativo de discos virtuais (VHD): http://www.marcelosincic.eti.br/Blog/post/Virtual-Hard-Disk-(VHD-e-WIM)-no-Windows-7-e-Windows-2008.aspx
Porem, como fazer boot por eles?
Existem duas formas. A primeira é mais simples, mas cria um boot primario. A segunda é um pouco mais detalhada.
Segue o primeiro método, passo-a-passo:
- Siga os passos do post acima para acrescentar o VHD na lista de discos
- Acesse o command prompt (administrador no Windows 7)
- Digite a seguencia:
- cd <letra>:\Windows\System32
bcdboot <letra>:\Windows
Este método é simples porque acrescenta uma entrada de boot baseada nos dados do diretório windows do VHD.
Segue o segundo método, passo-a-passo:
- Siga os passos do post acima para acrescentar o VHD na lista de discos
- Acesse o command prompt (administrador no Windows 7)
- Digite a seguencia:
Este segundo método primeiro cria um clone do SO que já existe, altera o nome e a localização apontando para o VHD e liga o detector de hardware.
Deletando a entrada no BOOT
Utilize os dois comandos abaixo, o primeiro para descobrir o CLSID e o segundo para deletá-lo:
- bcdedit (irá listar, veja o que quer deletar e copie o CLSID
- bcdedit /delete {CLSID}
OBSERVAÇÃO IMPORTANTE:
O fato de VHDs poderem ser criados no VirtualPC, Virtual Server, Hyper-V ou VirtualBox não quer dizer que você pode subir a maquina virtual nestes programas, instalar o SO e depois utilizar para Dual-Boot normalmente. O problema neste caso é que estes virtualizadores trabalham com drivers de hardware "virtuais" o que pode não funcionar na maquina fisica.