none
MS CRM 4.0 и ReportServer RRS feed

  • Вопрос

  •     Добрый день. Имеется установленный (без ошибок) CRM 4.0 на одном сервере,  SQL 2005 std с Reporting Server и Microsoft Dynamics CRM 4.0 Connector for SQL Reporting Services на другом. При попытке открыть сайт http://SQL/reportserver все открывается. Отчёты видны.

        При генерации отчёта с самого CRM выдаётся следующее: "

  • По соображениям безопасности DTD запрещен в этом документе XML. Чтобы разрешить обработку DTD, присвойте свойств у ProhibitDtd для XmlReaderSettings значение false и передайте параметры методу XmlReader.Create." 
  •   Удалил всё содержимое репорт сервера вместе с базами. Создал базы из Report Services Configuration Manager. Залил без ошибок туда отчёты с помощью PublishReports.exe. Из браузера снова всё доступно, а СRM снова ругается....
  • Изучил http://social.technet.microsoft.com/forums/ru-RU/sqlru/thread/6346b67f-7353-4540-8d27-9237b01fc361/ ... не получилось...

  •   Как я понимаю, веб узел ReportServer работает под .NET FrameWork 2.0 (попытка переключения в 1.1 вызывает ошибку) и, соответственно, для него применимо http://www.compress.ru/article.aspx?id=10803&iid=436
  • Вторым новшеством версии 2.0 стала возможность запрещения обработки DTD при загрузке XML-документа. Когда создавалась спецификация XML 1.0, вопросы обеспечения безопасности не являлись первоочередными, в результате чего DTD-документ может служить источником атак Denial of Service (DoS-атак), если, конечно, воспользоваться соответствующими функциями DTD. В версии 2.0 для защиты от DoS-атак предусмотрено свойство ProhibitDtd класса XmlReaderSettings, с помощью которого можно запретить обработку DTD: если это свойство установлено, то класс XmlReader будет генерировать исключение при обнаружении любого DTD-содержимого в XML-документе.
  • на сервере в crm выдается в логах вот что:

    Event code: 3005
    Event message: Возникло необработанное исключение.
    Event time: 09.03.2009 15:57:51
    Event time (UTC): 09.03.2009 12:57:51
    Event ID: 1470fa62095545c8b701e4c7973b617b
    Event sequence: 640
    Event occurrence: 5
    Event detail code: 0
     
    Application information:
        Application domain: /LM/W3SVC/2/ROOT-1-128810694877308994
        Trust level: Full
        Application Virtual Path: /
        Application Path: C:\Program Files\Microsoft Dynamics CRM\CRMWeb\
        Machine name: CRM 
     
    Process information:
        Process ID: 5820
        Process name: w3wp.exe
        Account name: NT AUTHORITY\NETWORK SERVICE
     
    Exception information:
        Exception type: WebException
        Exception message: Сбой запроса с состоянием HTTP 401: Unauthorized.
     
    Request information:
        Request URL: http://crm:5555/Reserved.ReportViewerWebControl.axd?ReportSession=f402xt55cal2mw45pplf1sqw&ControlID=ef29bcec-f970-4628-af31-1e62d793dc08&Culture=1049&UICulture=1049&ReportStack=1&OpType=SessionKeepAlive&Interval=539000
        Request path: /Reserved.ReportViewerWebControl.axd
        User host address: 192.168.0.x 
        User: DOMAIN\LOGIN (изменено по соображениям безопасности) 
        Is authenticated: True
        Authentication Type: Negotiate
        Thread account name: NT AUTHORITY\NETWORK SERVICE
     
    Thread information:
        Thread ID: 10
        Thread account name: NT AUTHORITY\NETWORK SERVICE
        Is impersonating: True
        Stack trace:    в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
       в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
       в Microsoft.SqlServer.ReportingServices2005.Execution.ReportExecutionService.GetExecutionInfo()
       в Microsoft.SqlServer.ReportingServices2005.Execution.RSExecutionConnection.GetExecutionInfo()
       в Microsoft.Reporting.WebForms.ServerReport.TouchSession()
       в Microsoft.Reporting.WebForms.SessionKeepAliveOperation.PerformOperation(NameValueCollection urlQuery, HttpResponse response)
       в Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext context)
       в System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
       в System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
     
     
    Custom event details:


  •   Помогите пофиксить...
  • читал http://social.technet.microsoft.com/Forums/en-US/sqlintegrationservices/thread/75f56c47-a3c3-47d3-a345-0ea95f777892/ - долго думал.....

  • MCSE: Security
9 марта 2009 г. 13:01

Все ответы

  • Мне кажется попытка исправить ошибку только усугубила ситуацию. С отчетами в CRM 4.0 есть одна небольшая тонкость - они хранятся в базе [org_name]_MSCRM и публикуются на report-сервере по требованию (это не касается стандартных отчетов - они публикуются при установку сервера или импорте/создании организации. Это хорошо видно при переносе баз организаций с одного sql сервера на другой: с отчетами вообще ничего делать не надо. В том числе переносить их с помощью PublishReports.exe.
    Вообще в этом случае лучше посмотреть логи sql-сервера, на котором лежат базы отчетов. Эти логи наиболее информативны.  
    MCT
    13 марта 2009 г. 13:52
    Модератор