WCF Fault contract problem

Topics: Exception Handling Application Block
Jan 30, 2011 at 4:59 PM

Hi,

I am using the EnLib4.1 .

Following is my app.config file EHAB block

 <loggingConfiguration name="Logging Application Block" tracingEnabled="true"
    defaultCategory="XPlatform Service Category" logWarningsWhenNoCategoriesMatch="true">
    <listeners>
      <add source="XPlatform ServiceLibrary Log" formatter="Text Formatter"
        log="XPlatform" machineName="" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        traceOutputOptions="None" filter="All" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        name="Formatted EventLog TraceListener" />
    </listeners>
    <formatters>
      <add template="Timestamp: {timestamp}&#xD;&#xA;Message: {message}&#xD;&#xA;Category: {category}&#xD;&#xA;Priority: {priority}&#xD;&#xA;EventId: {eventid}&#xD;&#xA;Severity: {severity}&#xD;&#xA;Title:{title}&#xD;&#xA;Machine: {machine}&#xD;&#xA;Application Domain: {appDomain}&#xD;&#xA;Process Id: {processId}&#xD;&#xA;Process Name: {processName}&#xD;&#xA;Win32 Thread Id: {win32ThreadId}&#xD;&#xA;Thread Name: {threadName}&#xD;&#xA;Extended Properties: {dictionary({key} - {value}&#xD;&#xA;)}"
        type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        name="Text Formatter" />
    </formatters>
    <categorySources>
      <add switchValue="All" name="XPlatform Service Category">
        <listeners>
          <add name="Formatted EventLog TraceListener" />
        </listeners>
      </add>
    </categorySources>
    <specialSources>
      <allEvents switchValue="All" name="All Events" />
      <notProcessed switchValue="All" name="Unprocessed Category" />
      <errors switchValue="All" name="Logging Errors &amp; Warnings">
        <listeners>
          <add name="Formatted EventLog TraceListener" />
        </listeners>
      </errors>
    </specialSources>
  </loggingConfiguration>
  <exceptionHandling>
    <exceptionPolicies>
      <add name="Exception Policy">
        <exceptionTypes>
          <add type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            postHandlingAction="NotifyRethrow" name="Exception">
            <exceptionHandlers>
              <add logCategory="XPlatform Service Category" eventId="100" severity="Error"
                title="Enterprise Library Exception Handling" formatterType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.TextExceptionFormatter, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                priority="0" useDefaultLogger="false" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                name="Logging Handler" />
            </exceptionHandlers>
          </add>
        </exceptionTypes>
      </add>
      <add name="WCFShielding">
        <exceptionTypes>
          <add type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            postHandlingAction="ThrowNewException" name="Exception">
            <exceptionHandlers>
              <add logCategory="XPlatform Service Category" eventId="100" severity="Error"
                title="Enterprise Library Exception Handling" formatterType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.TextExceptionFormatter, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                priority="0" useDefaultLogger="false" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                name="Logging Handler" />
              <add exceptionMessage="&quot;Pappu!!!&quot;" faultContractType="SyncSoft.XPlatform.V1.Security.UnauthorizedAccessFault, XPlatform Security, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1f4d9fa9b4928bac"
                type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.WCF.FaultContractExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.WCF, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                name="Throw UnauthorizedAccessFault">
                <mappings>
                  <add source="{Guid}" name="Id" />
                  <add source="{Message}" name="Message" />
                </mappings>
              </add>
            </exceptionHandlers>
          </add>
          <add type="System.ServiceModel.FaultException, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            postHandlingAction="None" name="FaultException" />
        </exceptionTypes>
      </add>
    </exceptionPolicies>
  </exceptionHandling>

When I use wcfTestClient to test my fault contract by throwing new exception in service (as  throw new DivideByZeroException("Invalid!!")), it is going to catch block and identifying it as fault exception properly.
             try
            {
                var response = client.SubmitReceiptBatch(request);
            }
            catch (FaultException<UnauthorizedAccessFault> ex)
            {
                UnauthorizedAccessFault fault = ex.Detail;
                Console.WriteLine(fault.Message);
            }
 

but when I integrate service layer and test the service from the screens, it says:

No signature message parts were specified for messages with the 'SyncSoft.CapitalX.V8.Services.FieldOptionService.MessageContracts/IFieldOptionService/GetFieldOptionsUnauthorizedAccessFaultFault' action.

Can you please help me in this regard. I have been trying so log to fix, any help is really appreciated.

Regards, Padma

Jan 31, 2011 at 12:27 AM

Is that a SecurityException?  It seems it's not an EntLib-related issue.  I suggest googling the error message itself.

 

Sarah Urmeneta
Global Technologies and Solutions
Avanade, Inc.
entlib.support@avanade.com

Jan 31, 2011 at 1:43 AM

Hello Sir,

I tried searching in google to fix this error. Can you please suggest how I can fix this SecurityException.

Padma

Jan 31, 2011 at 2:37 AM

One of the possible causes I found out about this exception is serialization problems, check out this thread.  I suggest you ask this over WCF forums as there are greater number of WCF experts that might be able to help you out there.

 

Sarah Urmeneta
Global Technologies and Solutions
Avanade, Inc.
entlib.support@avanade.com

Jan 31, 2011 at 4:53 AM

Hello,

Thank you very much.

Padma