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
Post a Comment