Aviso: Essa é a primeira vez que escrevo sobre Sharepoint no 100loop.com então gostaria que colaborassem com este iniciante nessa tecnologia e me indicassem o caminho correto.

Eu estou criando Web Services para expor algumas listas do Sharepoint para uma outra aplicação.  Estou usando Linq To Sharepoint para realizar as minhas consultas e em determinado momento passei a receber uma mensagem de erro que não me ajudava em nada. Veja:

Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.

O curioso dessa mensagem é que após recebê-la da primeira vez eu não conseguia depurar nenhuma outra variável da minha aplicação. Pois recebia essa mensagem para qualquer coisa que tentasse acessar.

A origem do problema

Você pode estar enfrentando um problema de Acesso Negado a algum recurso do Sharepoint e  ele gentilmente adiciona esse tratamento de exceções.

Como desabilitar esse comportamento?

Altere a propriedade CatchAccessDeniedException para false e execute um IISreset no servidor. Só isso e você irá receber as mensagens de erro da origem do problema.

bool originalCatchValue = SPSecurity.CatchAccessDeniedException;
SPSecurity.CatchAccessDeniedException = false;

try
{
   // Sua implementação
}
finally
{
   SPSecurity.CatchAccessDeniedException = originalCatchValue;
}

Na MSDN você encontra um SPSecurity.CatchAccessDeniedException Property sobre as melhore práticas para operar em cima dessa configuração.

Com a ajuda do blog FrazzledDad