c# - WCF Service - includeExceptionDetailInFaults=true works in dev-environment, but not in test-environment -


i have wcf service , set

<servicedebug includeexceptiondetailinfaults="true" /> 

this works when start server in visual studio on developer machine. doesn't work @ our test server.

config snippet:

<system.servicemodel> <behaviors>   <servicebehaviors>           <behavior name="debug">       <servicemetadata httpgetenabled="true" httpsgetenabled="true" />       <servicedebug includeexceptiondetailinfaults="true"  />               </behavior>           </servicebehaviors> </behaviors> <servicehostingenvironment aspnetcompatibilityenabled="true" multiplesitebindingsenabled="true" /> <services>   <service name ="tiscalc.service.uclcalc" behaviorconfiguration="debug"></service> </services> 

and when client calls server invalid request fault (this want)

<s:envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">    <s:body>       <s:fault>          <faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:internalservicefault</faultcode>          <faultstring xml:lang="de-de">fehler beim deserialisieren des textkörpers der anforderungsnachricht für vorgang "angebot".</faultstring>          <detail>             <exceptiondetail xmlns="http://schemas.datacontract.org/2004/07/system.servicemodel" xmlns:i="http://www.w3.org/2001/xmlschema-instance">                <helplink i:nil="true"/>                <innerexception>                   <helplink i:nil="true"/>                   <innerexception>                      <helplink i:nil="true"/>                      <innerexception i:nil="true"/>                      <message>instanzvalidierungsfehler: 'at' ist kein gültiger wert für land.</message>                      <stacktrace>bei microsoft.xml.serialization.generatedassembly.xmlserializationreaderuclcalcinterface.read13_land(string s)    bei microsoft.xml.serialization.generatedassembly.xmlserializationreaderuclcalcinterface.read14_adresse(boolean isnullable, boolean checktype)    bei microsoft.xml.serialization.generatedassembly.xmlserializationreaderuclcalcinterface.read15_leasinggeber(boolean isnullable, boolean checktype)    bei microsoft.xml.serialization.generatedassembly.xmlserializationreaderuclcalcinterface.read16_angebotcontext(boolean isnullable, boolean checktype)    bei microsoft.xml.serialization.generatedassembly.xmlserializationreaderuclcalcinterface.read33_item()    bei microsoft.xml.serialization.generatedassembly.arrayofobjectserializer.deserialize(xmlserializationreader reader)    bei system.xml.serialization.xmlserializer.deserialize(xmlreader xmlreader, string encodingstyle, xmldeserializationevents events)</stacktrace>                      <type>system.invalidoperationexception</type>                   </innerexception>                   <message>fehler im xml-dokument (20,13).</message>                   <stacktrace>bei system.xml.serialization.xmlserializer.deserialize(xmlreader xmlreader, string encodingstyle, xmldeserializationevents events)    bei system.xml.serialization.xmlserializer.deserialize(xmlreader xmlreader, string encodingstyle)    bei system.servicemodel.dispatcher.xmlserializeroperationformatter.deserializebody(xmldictionaryreader reader, messageversion version, xmlserializer serializer, messagepartdescription returnpart, messagepartdescriptioncollection bodyparts, object[] parameters, boolean isrequest)</stacktrace>                   <type>system.invalidoperationexception</type>                </innerexception>                <message>fehler beim deserialisieren des textkörpers der anforderungsnachricht für vorgang "angebot".</message>                <stacktrace><![cdata[bei system.servicemodel.dispatcher.xmlserializeroperationformatter.deserializebody(xmldictionaryreader reader, messageversion version, xmlserializer serializer, messagepartdescription returnpart, messagepartdescriptioncollection bodyparts, object[] parameters, boolean isrequest)    bei system.servicemodel.dispatcher.xmlserializeroperationformatter.deserializebody(xmldictionaryreader reader, messageversion version, string action, messagedescription messagedescription, object[] parameters, boolean isrequest)    bei system.servicemodel.dispatcher.operationformatter.deserializebodycontents(message message, object[] parameters, boolean isrequest)    bei system.servicemodel.dispatcher.operationformatter.deserializerequest(message message, object[] parameters)    bei system.servicemodel.dispatcher.dispatchoperationruntime.deserializeinputs(messagerpc& rpc)    bei system.servicemodel.dispatcher.dispatchoperationruntime.invokebegin(messagerpc& rpc)    bei system.servicemodel.dispatcher.immutabledispatchruntime.processmessage5(messagerpc& rpc)    bei system.servicemodel.dispatcher.immutabledispatchruntime.processmessage41(messagerpc& rpc)    bei system.servicemodel.dispatcher.immutabledispatchruntime.processmessage4(messagerpc& rpc)    bei system.servicemodel.dispatcher.immutabledispatchruntime.processmessage31(messagerpc& rpc)    bei system.servicemodel.dispatcher.immutabledispatchruntime.processmessage3(messagerpc& rpc)    bei system.servicemodel.dispatcher.immutabledispatchruntime.processmessage2(messagerpc& rpc)    bei system.servicemodel.dispatcher.immutabledispatchruntime.processmessage11(messagerpc& rpc)    bei system.servicemodel.dispatcher.immutabledispatchruntime.processmessage1(messagerpc& rpc)    bei system.servicemodel.dispatcher.messagerpc.process(boolean isoperationcontextset)]]></stacktrace>                <type>system.servicemodel.communicationexception</type>             </exceptiondetail>          </detail>       </s:fault>    </s:body> </s:envelope> 

same call against test environment same service configuration , same sources returns error 500, , absolutely don't know why...

<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">    <head>       <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>       <title>500 - internal server error.</title>       <style type="text/css">          <!--body{margin:0;font-size:.7em;font-family:verdana, arial, helvetica, sans-serif;background:#eeeeee;} fieldset{padding:0 15px 10px 15px;}  h1{font-size:2.4em;margin:0;color:#fff;} h2{font-size:1.7em;margin:0;color:#cc0000;}  h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}  #header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet ms", verdana, sans-serif;color:#fff; background-color:#555555;} #content{margin:0 0 0 2%;position:relative;} .content-container{background:#fff;width:96%;margin-top:8px;padding:10px;position:relative;}-->       </style>    </head>    <body>       <div id="header">          <h1>server error</h1>       </div>       <div id="content">          <div class="content-container">             <fieldset>                <h2>500 - internal server error.</h2>                <h3>there problem resource looking for, , cannot displayed.</h3>             </fieldset>          </div>       </div>    </body> </html> 

is there config have in iis? hope can give me hint.

edited: additional info: throw faultexception typed details. don't want write handler requests don't match contract , causing error during deserialization. example, if client (like in testrequest) sends invalid enum-value. in case want "free" debuginformations. in production, such invalid requests won't happen. can turn off includeexceptiondetailinfaults in production environment.

thanks in advance!

mike

you should not use includeexceptiondetailinfaults = true instead, need throw faultexception. , recommended use faultcontractattribute design services return strongly-typed soap faults.


Comments