LightSwitch应用程序在实例化WCF代理时会阻塞

时间:2012-01-21 19:26:44

标签: vb.net wcf wcf-ria-services visual-studio-lightswitch

我正在尝试为基于网络的应用创建LightSwitch管理面板。这就是我设置WCF RIA服务以与Web应用程序的WCF服务进行交互的原因。在测试用户的加载时,我发现LightSwitch说它无法加载资源。立即窗口告诉我在System.ServiceModel.dll中发生了System.InvalidOperationException但是VS实际上并没有指向我发生错误的位置。在行代码执行的一些行之后,我发现它在WCF代理的实例化时被阻塞。

WCF RIA服务类的代码示例:

Public Class RIAInterface
    Inherits DomainService
    Private WCFProxy As New Service.UserClient() '<-- Choke Point

    Public Sub New()
        WCFProxy.Open()
    End Sub

    <Query(IsDefault:=True)>
    Public Function GetUsers() As IQueryable(Of User)
        Dim TempList As New List(Of User)
        For Each User As Service.User In WCFProxy.GetUsers()
            TempList.Add(New User With {.ID = User.ID, .FullName = User.FullName,   .EmailAddress = User.Email, .Username = User.UserName, .Class = User.Class.Name, .AccountType = User.Privilege.Name})
        Next
        Return TempList.AsQueryable
    End Function
End Class

在与RIA服务和LightSwitch进行了一些愚弄之后,情况发生了变化。我运行了应用程序并得到了一个实际的异常。

异常详细信息: 找不到名为“EduNetBackEnd_IUser”的端点元素,并在ServiceModel客户端配置部分中收缩“EduNet.IUser”。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此名称匹配的端点元素。

这是App.config中的ServiceModel配置:

<system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="EduNetBackEnd_IUser" closeTimeout="00:01:00" openTimeout="00:01:00"
                receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false"
                transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                allowCookies="false">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <reliableSession ordered="true" inactivityTimeout="00:15:00"
                    enabled="true" />
                <security mode="None">
                    <transport clientCredentialType="Windows" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="Windows" negotiateServiceCredential="true" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="[Service_Address]"
            binding="wsHttpBinding" bindingConfiguration="EduNetBackEnd_IUser"
            contract="EduNet.IUser" name="EduNetBackEnd_IUser" />
    </client>
</system.serviceModel>

0 个答案:

没有答案