2010-12-01 8 views
0

J'ai créé un ensemble personnalisé pour convertir le format RTF en texte brut et il fonctionne bien avec la configuration suivante: SSRS 2008, Win 2003 Server, les modifications rssrvpolicy.config, un compte d'exécution et IIS 6.0.Reporting Services Custom Assembly

Nous avons créé un nouveau serveur exécutant SSRS 2008R2, Win 2008 et IIS 7. Il ne fonctionne pas dans ce nouvel environnement et je n'obtiens aucune erreur, mais le service SSRS redémarre lui-même. Cela se produit uniquement lorsque je référence System.Windows.Forms.RichTextBox(). Voir le code ci-dessous. Est-ce que quelqu'un peut me donner une idée de ce que je devrais faire ou tester pour que cela fonctionne? J'ai vérifié les fichiers journaux et l'Observateur d'événements, mais je n'ai vu aucune erreur. Il appelle mon assembly et fonctionne si je ne publie que du texte dans le rapport et n'appelle pas RichTextControl. Il échoue lorsque j'essaie de référencer System.Windows.Forms.RichTextBox. J'ai également installé au GAC sans chance, mais ne devrait pas avoir besoin (?) Et n'a pas avec l'ancienne version.

J'ai également essayé de mettre un bloc try/catch autour du code pour voir si je pouvais obtenir l'erreur. Si je viens de lancer une erreur, je reçois le message. Si j'appelle le contrôle RichTextBox, le service SSRS redémarre.

Mon code:

using System; 
using System.Windows.Forms; 
using System.Diagnostics; 
namespace ConversionUtility 
{ 
    public class ConversionUtility 
    { 
     [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Assert, Unrestricted = true)] 
     public static string ConvertRTFToText(string richText) 
     { 
      string sText = ""; 

      try 
      { 
       // if I comment out these 3 lines, this will work 
       RichTextBox richTextBox = new System.Windows.Forms.RichTextBox(); 
       richTextBox.Rtf = richText; 
       sText = richTextBox.Text; 
       //throw new Exception("Log this error"); 
      } 
      catch (Exception e) 
      { 
       sText = "Error Caught: " + e.Message; 
      } 

      return sText; 
     } 
    } 
} 

Je ces autorisations définies. J'ajoute le CodeGroup ci-dessous et cela fonctionne si je ne référence pas le RichTextBox. Le service redémarre dès que je tente de faire référence à System.Forms.Windows.RichTextBox()

<CodeGroup 
class="UnionCodeGroup" 
version="1" 
Name="SecurityExtensionCodeGroup" 
Description="Code group Conversion Utility" 
PermissionSetName="FullTrust"> 
<IMembershipCondition 
    class="UrlMembershipCondition" 
    version="1" 
    Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin  \ConversionUtility.dll" 
/> 

Je pense qu'il est un problème avec avoir des autorisations à System.Windows.Forms, mais havre de paix » J'ai été capable de comprendre ce que je devais faire.

Merci à l'avance,

Randy

+0

Peut-être que c'est une installation de dépendance manquante sur le nouveau serveur? Assurez-vous que vous avez installé .net runtime 3.5 et 4.0. – Tahbaza

+0

Oui, les deux sont installés. Vous ne savez pas ce que vous entendez par installation de dépendance? Je sais que VS2008 est installé sur l'autre serveur, mais nous ne voulons pas l'installer sur ce serveur. – Iceman

Répondre

2

j'ai fini par contacter Microsoft parce que cela aurait dû fonctionner. Quand je leur ai donné un exemple d'application dans leur environnement. Il s'est avéré qu'ils avaient un correctif installé pour Reporting Services que je n'ai pas. Après avoir installé le correctif, tout a fonctionné.

build 10.50.1720 - CU2 appliquée pour le RTM 2008 R2 de SSRS (http://support.microsoft.com/kb/2072493).