System.ServiceModel.CommunicationException: приложение Silverlight, считывающее данные Excel с помощью службы Excel - PullRequest
0 голосов
/ 03 июля 2010

Я создаю консольный проект ac # для чтения документов Excel на сервере sharepoint, все работает отлично.Проблема в том, что когда я пытаюсь прочитать данные файла Excel в приложении silverlight, появляется следующее исключение:

{System.ServiceModel.CommunicationException: An error occurred while trying to make a request to URI 'http://phc/_vti_bin/excelservice.asmx'. This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent. This error may also be caused by using internal types in the web service proxy without using the InternalsVisibleToAttribute attribute. Please see the inner exception for more details. ---> System.Security.SecurityException ---> System.Security.SecurityException: Security error.
  at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
  at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
  at System.Net.Browser.AsyncHelper.<>c__DisplayClass2.<BeginOnUI>b__0(Object sendState)
  --- End of inner exception stack trace ---
  at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
  at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
  at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
  --- End of inner exception stack trace ---
  at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
  at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
  at System.ServiceModel.ClientBase`1.ChannelBase`1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
  at CERViewer.ESW.ExcelServiceSoapClient.ExcelServiceSoapClientChannel.EndOpenWorkbook(IAsyncResult result)
  at CERViewer.ESW.ExcelServiceSoapClient.CERViewer.ESW.ExcelServiceSoap.EndOpenWorkbook(IAsyncResult result)
  at CERViewer.ESW.ExcelServiceSoapClient.EndOpenWorkbook(IAsyncResult result, ObservableCollection`1& status)
  at CERViewer.ESW.ExcelServiceSoapClient.OnEndOpenWorkbook(IAsyncResult result)
  at System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)}

Исходный код:

private void GetFeatures()
    {
      ExcelServiceSoapClient = new ExcelServiceSoapClient();
      string targetWorkbookPath = "http://phc/Shared%20Documents/sample.xlsx";

      xlservice.OpenWorkbookCompleted += new EventHandler<OpenWorkbookCompletedEventArgs>(xlservice_OpenWorkbookCompleted);
      xlservice.OpenWorkbookAsync(targetWorkbookPath, "en-US", "en-US");
    }

    void xlservice_OpenWorkbookCompleted(object sender, OpenWorkbookCompletedEventArgs e)
    {
      sessionId = (string)e.Result; //exception here!!!
    }

Я попробовал способыниже, но все они потерпели неудачу.

1: создайте файл и поместите его в «C: \ Program Files \ Common Files \ Microsoft Shared \ Расширения веб-сервера \ 14 \ isapi \», но он снова не удался.

2: откройте междоменную книгу и доступ к подключению к данным на сервере sharepoint, здесь

Я совершенно новичок в разработке sharepoint и silverlight, я ищу в сети, но не могу 'не могу найти ответ.кто-нибудь может мне помочь ???

1 Ответ

0 голосов
/ 03 июля 2010

Я исправил проблему, поместив файл clientaccesspolicy.xml в корень сервера.

...