Själva koden kommer inte att ändras om du bygger i debug/release mode. Det som ändras är den debuginformation som läggs till för att du skall kunna debuga applikationen.
Frågan är om felete som du får, händer i koden eller under själva byggandet. För om felet händer i koden så har det inget med bygglägget att göra, utan något annant som blir jobbigt att hitta eftersom du inte kan debuga dig igenom koden. Då blir det till att logga ordentligt för att hitta var någonstans som felet inträffar och varför.
Jag hajar inte hur samma kod och samma web service plötsligt kan generera ett fel, bara för att man byggde med "mindre debuginformation". Det funkar om jag switchar tillbaka igen.
mer av felet:
Source Error:
Line 397: [return: System.Xml.Serialization.SoapElementAttribute("getAssetReturn")]
Line 398: public DigitalAsset getAsset(string sessionId, int assetId, AssetTemplate assetTemplate) {
Line 399: object[] results = this.Invoke("getAsset", new object[] {
Line 400: sessionId,
Line 401: assetId,
Source File: C:\Inetpub\CompanyX\Main\CompanyX.EPi.External\Web References\Remote.C2\Reference.cs Line: 399
Stack Trace:
[ArgumentException: Item has already been added. Key in dictionary: 'CompanyX.EPi.External.Remote.C2.FieldMetaData' Key being added: 'CompanyX.EPi.External.Remote.C2.FieldMetaData']
System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) +2807907
System.Collections.Hashtable.Add(Object key, Object value) +11
System.Xml.Serialization.XmlSerializationWriter.AddWriteCallback(Type type, String typeName, String typeNs, XmlSerializationWriteCallback callback) +74
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.InitCallbacks() +1966
System.Xml.Serialization.XmlSerializationWriter.GetTypeEntry(Type t) +53
System.Xml.Serialization.XmlSerializationWriter.WriteReferencedElement(String name, String ns, Object o, Type ambientType) +117
System.Xml.Serialization.XmlSerializationWriter.WriteReferencedElements() +50
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write135_getAsset(Object[] p) +339
Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer164.Serialize(Object objectToSerialize, XmlSerializationWriter writer) +73
System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) +260
[InvalidOperationException: There was an error generating the XML document.]
System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) +674
System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle) +18
System.Web.Services.Protocols.SoapHttpClientProtocol.Serialize(SoapClientMessage message) +510
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) +129
CompanyX.EPi.External.Remote.C2.AirportService.getAsset(String sessionId, Int32 assetId, AssetTemplate assetTemplate) in C:\Inetpub\CompanyX\Main\CompanyX.EPi.External\Web References\Remote.C2\Reference.cs:399
CompanyX.EPi.External.Corporate.Templates.Downloader.LoadAsset(String assetId, C2ImageRepresentation Imageversion) in C:\Inetpub\CompanyX\Main\CompanyX.EPi.External.Corporate\Templates\Downloader.aspx.cs:155
CompanyX.EPi.External.Corporate.Templates.Downloader.Page_Load(Object sender, EventArgs e) in C:\Inetpub\CompanyX\Main\CompanyX.EPi.External.Corporate\Templates\Downloader.aspx.cs:29
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.832; ASP.NET Version:2.0.50727.832
Är det så att det inte är din kod som det är fel på utan den proxy klass som genereras när du sätter din webReferens?
Det verkar ju vara så att du får felet när de försöker serializera datan för anropet mot webservicesen.
Jag kan inte heller förstå att det skall fungerar i debug läge men inte i release läge. Eftersom det borde vara samma information i koden som exekveras.
Om jag hade varit som dig, så hade jag kört det i debugläge, tråkigt att det tar lite mer prestanda, men det är ju bättre än att det inte fungerar, och ett sån't här fel kan ta hur lång tid som helst att hitta, eller så tar det bara någon timme...
Det visade sig vara ett programmeringsknas, inte helt uppenbart dock.
Jag ärvde från den Airport till en egen class med partial class, och i den så overrideade jag GetWebRequest(Uri uri) bara för att justera lite värden (keep alive osv).
Det funkade bra i debug mode, men inte i release :OO
260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e