0

我正在使用以下命令:

svcutil.exe /language:c# /out:agnServiceClient.cs /config:app.config net.pipe://localhost/agnService

ProtocolException在服务器上得到以下信息:

http://www.w3.org/2005/08/addressing/anonymous需要流安全 ,但没有协商安全上下文。这可能是由于远程端点在其绑定中缺少 StreamSecurityBindingElement 造成的。

服务器配置如下:

<system.serviceModel>
    <bindings>
        <netNamedPipeBinding>
            <binding name="NetNamedPipeBinding_IWordDuplexCommunicationService" closeTimeout="00:01:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:30:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="204003200" maxConnections="10" maxBufferSize="204003200" maxReceivedMessageSize="204003200">
                <readerQuotas maxDepth="204003200" maxStringContentLength="204003200" maxArrayLength="204003200" maxBytesPerRead="204003200" maxNameTableCharCount="204003200" />
                <security mode="Transport">
                    <transport protectionLevel="EncryptAndSign" />
                </security>
            </binding>
        </netNamedPipeBinding>
    </bindings>
    <extensions>
        <behaviorExtensions>
            <add name="sessionToken" type="Agn.Infrastructure.Security.Session.JSessionBehaviorElement, Agn.Infrastructure.Security" />
        </behaviorExtensions>
    </extensions>
    <behaviors>
        <serviceBehaviors>
            <behavior name="returnFaults">
                <serviceDebug includeExceptionDetailInFaults="true" />
                <serviceMetadata httpGetEnabled="false" />
                <dataContractSerializer maxItemsInObjectGraph="204003200" />
            </behavior>
        </serviceBehaviors>
        <endpointBehaviors>
            <behavior name="sessionToken">
                <sessionToken />
            </behavior>
        </endpointBehaviors>
    </behaviors>
    <services>
        <service name="Agn.Shell.Services.AgnService">
            <endpoint address="net.pipe://localhost/agnService" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_IWordDuplexCommunicationService" contract="Agn.Shell.Services.IAgnService"  />
        </service>
    </services>

代码就这么简单:

[ServiceContract]
public interface IAgnService
{
    [OperationContract]
    PageWrapper<Callejero> GetListCallejero(FiltroCallejero filter, PageWrapper page);
}

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.Single, MaxItemsInObjectGraph = WellKnownGeneralConstants.ImagnaMaxItemsInObjectGraph)]
public class AgnService : IAgnService
{
    private readonly ICallejeroService callejeroService;

    public AgnService(ICallejeroService callejeroService)
    {
        this.callejeroService = callejeroService;
    }

    public PageWrapper<Callejero> GetListCallejero(FiltroCallejero filter, PageWrapper page)
    {
        return this.callejeroService.GetList(filter, page) as PageWrapper<Callejero>;
    }
}

启动代码:

public void StartupService()
{
    this.agnServiceHost = new ServiceHost(this.Container.Resolve<IAgnService>());
    this.agnServiceHost.Open();
}

有什么提示吗?

4

0 回答 0