Solved

WCF Server Config - "Invalid or expired security context"

Posted on 2008-10-23
2
8,702 Views
Last Modified: 2013-12-17
So, in my dev environment my tests to my local service works but when I deploy it - I get the following error on my unit tests (Automated build server spits this exception out).

"System.ServiceModel.FaultException : The message could not be processed. This is most likely because the action 'http://tempuri.org/IUserTasks/GetUsers' is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint's binding."

Dev env. is Vista w/  VS2008,
Published to  an XP IIS 5.1 box  with .net 3.5 sp1 installed.

The following are my config files and I am not sure if it is a config issue preventing this communication or if its my machine security.  I know I shouldn't need any certificates as I'm explicitly declaring no security for the service and client.  

Any Ideas?
Server Config -------
 

 <system.serviceModel>

    <bindings>

      <wsHttpBinding>

        <binding name="WsHTTPBinding_IUserTasksBindingConfiguration"  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:10:00"

              enabled="false" />

          <security mode="None">

            <transport clientCredentialType="None" proxyCredentialType="None"

                realm="" />

            <message clientCredentialType="None" negotiateServiceCredential="false"

                establishSecurityContext="false" />

          </security>

        </binding>

      </wsHttpBinding>

    </bindings>

    <services>

      <service name="SwiftToDo.Services.UserTasksServiceType"  behaviorConfiguration="UserTasksServiceTypeBehaviour">

        <!-- Service Endpoints -->

        <endpoint address="" 

                  binding="wsHttpBinding" 

                  contract="SwiftToDo.Services.IUserTasks"

                  bindingConfiguration="WsHTTPBinding_IUserTasksBindingConfiguration">

        </endpoint>

      </service>

      

    </services>

    <behaviors>

      <serviceBehaviors>

        

        <behavior name="UserTasksServiceTypeBehaviour" >

          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->

          <serviceMetadata httpGetEnabled="true"/>

          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->

          <serviceDebug includeExceptionDetailInFaults="true" />

          <serviceTimeouts transactionTimeout="00:01:00"/>

          

        </behavior>

      </serviceBehaviors>

    </behaviors>

  </system.serviceModel>
 
 
 
 
 

Client------
 

 <system.serviceModel>

    <client>

      <endpoint address="http://brettlaptop/SwiftToDo/Service.svc" 

                   binding="wsHttpBinding"

                   bindingConfiguration="WsHTTPBinding_IUserTasksBindingConfiguration"

                   contract="SwiftToDo.Services.IUserTasks"

                   name="wsHttpBinding_IUserTasks"/>
 

    </client>

    <bindings>

      <wsHttpBinding>

        <binding name="WsHTTPBinding_IUserTasksBindingConfiguration"  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:10:00"

              enabled="false" />

          <security mode="None">

            <transport clientCredentialType="None" proxyCredentialType="None"

                realm="" />

            <message clientCredentialType="None" negotiateServiceCredential="false"

                establishSecurityContext="false" />

          </security>

        </binding>

      </wsHttpBinding>

    </bindings>

  </system.serviceModel>

Open in new window

0
Comment
Question by:bswiftly
2 Comments
 
LVL 18

Accepted Solution

by:
DarrenD earned 125 total points
ID: 22868715
Hi,

I'm not 100% but your bindings look a little messed up. My bindings look like the following:

-- Client

  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IAccounting" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
          maxBufferSize="10000000" maxBufferPoolSize="524288" maxReceivedMessageSize="10000000"
          messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
          useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="200000" maxArrayLength="200000"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:3332/Accounting.svc" binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_IAccounting" contract="AccountingSVC.IAccounting"
        name="BasicHttpBinding_IAccounting" />
  </system.serviceModel>


-- Server

  <system.serviceModel>
    <services>
      <service behaviorConfiguration="Usit.Services.AccountingBehavior"
        name="Usit.Services.Accounting">
        <endpoint address="" binding="basicHttpBinding" contract="Usit.Services.IAccounting">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="Usit.Services.AccountingBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>    
  </system.serviceModel>

0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now