Silverlight 4 WCF服务器未提供有意义的回复

时间:2012-01-26 20:20:57

标签: wcf silverlight-4.0 internal-server-error

我得到臭名昭着的,"服务器没有提供有意义的回复;这可能是由于合同不匹配,过早的会话关闭或内部服务器错误造成的。在我的项目中。它是由Silverlight 4项目使用的WCF PollingDuplex服务。

我正在请求包含该服务的文档,因此我可以在SL应用程序的查看器中显示它。

这是Server Web Config XML:

    <system.serviceModel>

    <extensions>
      <bindingExtensions>
        <add name="pollingDuplex" type="System.ServiceModel.Configuration.PollingDuplexHttpBindingCollectionElement,System.ServiceModel.PollingDuplex, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      </bindingExtensions>
    </extensions>


  <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />

 <behaviors>
      <serviceBehaviors>
    <behavior name="PortalOnlineBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

 <bindings>
 <pollingDuplex>
        <binding name="SLPollingDuplex" duplexMode="MultipleMessagesPerPoll" />
      </pollingDuplex>
    </bindings>

    <services>
      <service name="Online.Web.PortalOnline" behaviorConfiguration="PortalOnlineBehavior">
        <endpoint address="" binding="pollingDuplex" bindingConfiguration="SLPollingDuplex"
          contract="Notification.IPortalOnline" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://portalonline.com/PortalOnline/IPortalOnline" />
          </baseAddresses>
        </host>
      </service>
    </services>

  </system.serviceModel>

以下是我试图通过此WCF服务返回SL的对象

Imports System.ServiceModel
Imports System.Runtime.Serialization
Imports DocCave.Common
Imports System.Xml
Imports System.IO

    <DataContract(NAMESPACE:=DataStore.NAMESPACE)>
    Public Class PortalDocument

        <DataMember()>
        Public Property DataSource As Byte()

        <DataMember()>
        Public Property FileName As String

        <DataMember()>
        Public Property FileType As String

    End Class

这里是正在调用的WCF方法:

 Public Function GetDocument(sessionUserMeta As Common.UserMetaData, docId As System.Guid) As Notification.PortalDocument Implements Notification.IPortalOnline.GetDocument

        Dim doc As Documents.Document = Documents.Document.GetDocument(docId, sessionUserMeta)

        Dim portalDoc As New PortalDocument

        portalDoc.DataSource = doc.DataSource

        portalDoc.FileName = doc.QueryPackage.DocumentName
        portalDoc.FileType = doc.QueryPackage.Type

        Return portalDoc

    End Function

进一步详情:

这适用于一个或两个文档请求,并给出了上述错误。例如,我可以在使用此方法使用此服务加载SL应用程序时加载默认文档,并且它可以完美填充。然后,我可以转到我拥有的树视图,并选择一个文档,它对于第一个文档非常有用......但在此之后,错误。另外,我注意到有时它只会工作一次,如果我选择某些更大的pdf(250kb左右......)......哦,我忘了......这里是代码在我的SL应用程序中连接到WCF服务。我正在使用&#34; GetBaseWebAddress()&#34;因为我使用动态子域,所以每次地址的一部分可能不同......

Private Sub LoadClient()


        Dim bind As New PollingDuplexHttpBinding(PollingDuplexMode.MultipleMessagesPerPoll)

        Dim endpoint As New EndpointAddress(GetBaseWebAddress() & "PortalOnline/PortalOnline.svc")

        Me.client = New PortalOnline.PortalOnlineClient(bind, endpoint)

        AddHandlers()

    End Sub

我已经挣扎了一段时间,所以任何帮助都会非常感激......

0 个答案:

没有答案