HttpWebResponse greska

Nov 4, 2012 at 9:40 PM

Pomoć,

Probao sam program (VS solution) koji sam download-ao ali i se pojavljuje greska na slijedećoj liniji koda:

HttpWebResponse response = request.GetResponse() as HttpWebResponse;

GRESKA JE: "The remote server returned an error: (500) Internal Server Error."

 

Ova greska desava se kad se napravi zahtjev za racun ili poslovni prostor dok ECHO postupak (koji u konacnici zove istu funkciju SendSoapMessage) prodje dobro.

 

Uvjeren sam da nije greska do servera jer pomocu Fiddler Soap Sniffer-a vidim da je soap reponse dosao na moje racunalo ali zbog nekog razloga request.GetResponse() taj rezultat ne procita i program pukne.

Ima li itko kakvu ideju zasto to kod mene ne radi (predpostavljam da kod drugih radi buduci se nitko ne buni)?

 

 

 

Coordinator
Nov 4, 2012 at 9:52 PM
Edited Nov 4, 2012 at 9:53 PM

Ovo bi vrlo lako mogao biti problem sa certifikatom, ali ne sa ROOT, već sa FISKAL 1. Prvo provjeri da li je FISKAL 1 certifikat dobro instaliran, da li imaš kao user prava na pristup ključevima, itd.. Ukoliko imaš, pokušaj ga izbrisati, zajedno sa ROOT certifikatom pa sve ponovo instalirati (ROOT i FISKAL 1). Nadam se da imaš spremljen na disku FISKAL 1 certifikat :)

Nadalje, radi jednog malog buga, koji će biti popravljen u 1.2 verziji, dešava se da program pokuša dobiti nešto iz "null" objekta, pa stvar završi sa pucanjem (http://fiskalizacija.codeplex.com/workitem/637).

Postoji jedan workaround za to: - u Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav.cs staviš brakepoint na liniju ispod "catch (WebException ex)" (linija 286). Kada tu stane, pogledaš što točno piše u "ViewDetail" pod "InnerException". Ako ne zaustaviš petlju ovdje, program će dalje puknuti...

Ovdje je screenshot kako sam ja "lovio" jedan error, ali mislim da ćeš ga i ti na isti način uspjeti "uloviti".

http://fiskalizacija.codeplex.com/Download/AttachmentDownload.ashx?ProjectName=fiskalizacija&WorkItemId=634&FileAttachmentId=255

Uglavnom, to je sve što mi u ovom trenutku pada na pamet. Iako sam uvjeren da imaš problem sa certifikatom.

Nadam se da će se naći još netko s kakvom sugestijom.

Nov 4, 2012 at 10:13 PM

Ne bi rekao da ima veze sa certifikatom jer request.GetResponse() cita sirove podatke rezultata. Sto je najgore, SOAP rezultat postoj (kao sto rekoh, SOAP sniffer mi prikaze povratnu poruku) ali gornja funkcija pukne.

Nadalje, ECHO poruka prolazi najnormalnije.

P.S. mislio sam da je mozda problem u tome sto je echo poruka dosta kraca pa sam za echo message uzeo veliki tekst ali i to je OK.

Nemam pojma sto da mislim???

 

 

Coordinator
Nov 4, 2012 at 10:15 PM

Možeš li ovdje pastati izvorni XML koji šalješ na CIS?

Nov 4, 2012 at 10:39 PM

 

***************** XML koji saljem

 

 

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><PoslovniProstorZahtjev xmlns="http://www.apis-it.hr/fin/2012/types/f73"><Zaglavlje><IdPoruke>ca996cc7-fcc3-4c50-961b-40c8b875a5e8</IdPoruke><DatumVrijeme>04.11.2012T20:33:17</DatumVrijeme></Zaglavlje><PoslovniProstor><Oib>02994650199</Oib><OznPoslProstora>Poslovnica1</OznPoslProstora><AdresniPodatak><Adresa><Ulica>Avenija Marina Držića</Ulica><KucniBroj>0014</KucniBroj><KucniBrojDodatak>B</KucniBrojDodatak><BrojPoste>21000</BrojPoste><Naselje>SPLIT</Naselje><Opcina>12345</Opcina></Adresa></AdresniPodatak><RadnoVrijeme>Pon-Sub: 08:00-21:00, Ned: 09:00-14:00</RadnoVrijeme><DatumPocetkaPrimjene>04.11.2012</DatumPocetkaPrimjene></PoslovniProstor><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignatureValue>MCs1VURMekp1R3k1Nkhvakg1MTArZC4uLi4u</SignatureValue><KeyInfo><X509Data><X509IssuerSerial><X509IssuerName>OU=DEMO,O=FINA,C=HR</X509IssuerName><X509SerialNumber>1053495513</X509SerialNumber></X509IssuerSerial><X509Certificate>TUlJRXlEQ0NBN0NnQXdJQkFnSUVQc3NRMlRBTkJna3FoLi4u</X509Certificate></X509Data></KeyInfo></Signature></PoslovniProstorZahtjev></soap:Body></soap:Envelope>

 

 

***************** XML koji primim ali ne mogu procitati

 

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><tns:PoslovniProstorOdgovor Id="G0xcba33080-4D" xsi:schemaLocation="http://www.apis-it.hr/fin/2012/types/f73 FiskalizacijaSchema.xsd " xmlns:tns="http://www.apis-it.hr/fin/2012/types/f73"><tns:Zaglavlje><tns:IdPoruke>ca996cc7-fcc3-4c50-961b-40c8b875a5e8</tns:IdPoruke><tns:DatumVrijeme>04.11.2012T23:25:23</tns:DatumVrijeme></tns:Zaglavlje><tns:Greske><tns:Greska><tns:SifraGreske>s002</tns:SifraGreske><tns:PorukaGreske>Certifikat nije izdan od strane FINA-e.</tns:PorukaGreske></tns:Greska></tns:Greske><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
  <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
  <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
  <Reference URI="#G0xcba33080-4D">
    <Transforms>
      <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
      <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    </Transforms>
    <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    <DigestValue>KPFmzTACqcUNAqzs6ZlSsW1xdmo=</DigestValue>
  </Reference>
</SignedInfo>
    <SignatureValue>mhUDOPsifLcaK3GXMUhmHbrAWnCrL9mlSHUdbyWOTFQ/fR5jnPDuYCxVbcMWtUEjMMdKX4MEn20gihRt1CqvyyaLep9R1+uh/+aU9lGmdVhRUTGxSEETG2cfbtVyYjZu1UVigh9Q99yx8PuwXAZAK/Rak6zd9TWPAshisAeSxOOT/l7SuNfICgTudpnM7LkkAJTdkaznEm92ki0ACwH08t+3SYn2myhIrzq3kPUEU3FUeDOoXtYb974OLRz8v76OBSvFrl9Nh7J+Dizp81mt+IVjOD5tycH8HHzq+AeUzDeyGekJL8FPWE+Sp4rMRvk9UZW3vF/rDRSmbomTd3Iwhw==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIExDCCA6ygAwIBAgIEPssQcTANBgkqhkiG9w0BAQUFADArMQswCQYDVQQGEwJIUjENMAsGA1UEChMERklOQTENMAsGA1UECxMEREVNTzAeFw0xMjA5MjYwODExNDlaFw0xNDA5MjYwODQxNDlaMHgxCzAJBgNVBAYTAkhSMQ0wCwYDVQQKEwRGSU5BMQ0wCwYDVQQLEwRERU1PMREwDwYDVQQLEwhQb3Nsb3ZuaTEgMB4GA1UECxMXQVBJUyBJVCBELk8uTy4gODA1NDEzNzIxFjAUBgNVBAMTDWZpc2thbGNpc3Rlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC81TtKtJ84emCS/HK7gSovjNdluZWB0DbIMq3cBFpOpmurcbDCJ1Z17XiPLa+UWYIqyAjHQyDnG/H4c5EeGoli9swz5QcZFBmyXTpSd3GuMROgUAd4bcvbw1/HDONE5cE8PL11GIy8gi5ANZkujalYmx+1ImnhHxx1Bh2UJ/bcl2eXPtieBQBwtClATSzseB5FFz8LcSyfzM7h39PsAIZ0p8YzH7W+307gvgrJHYb/n4ADwlxieHqb5j74DVD0rUPcUE5d0nSZ7hfEkW8xICgs1Ly6Vu3w7Z5M8vb4QmoPnlT1EaHCXiweuK6vjkUk8RQmYY4lTFBs8zHiG7h4n9bPAgMBAAGjggGhMIIBnTAOBgNVHQ8BAf8EBAMCBaAwQgYDVR0gBDswOTA3BgkrfIhQBR8FBAIwKjAoBggrBgEFBQcCARYcaHR0cDovL2RlbW8tcGtpLmZpbmEuaHIvY3BzLzCBzgYDVR0fBIHGMIHDMEKgQKA+pDwwOjELMAkGA1UEBhMCSFIxDTALBgNVBAoTBEZJTkExDTALBgNVBAsTBERFTU8xDTALBgNVBAMTBENSTDcwfaB7oHmGT2xkYXA6Ly9kZW1vLWxkYXAuZmluYS5oci9vdT1ERU1PLG89RklOQSxjPUhSP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3QlM0JiaW5hcnmGJmh0dHA6Ly9kZW1vLXBraS5maW5hLmhyL2NybC9kZW1vY2EuY3JsMCsGA1UdEAQkMCKADzIwMTIwOTI2MDgxMTQ5WoEPMjAxNDA5MjYwODQxNDlaMB8GA1UdIwQYMBaAFHpgI45InTJrpOUt3bhZtJT8QmKeMB0GA1UdDgQWBBRgIJsZevSn6kDuSzChmaa9Sqr6sjAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBBQUAA4IBAQCo5kJWaNjgS+UG7XQHsHersDFk4K5W/Y2Pbubary0j3IwJrveHbUR3HOb0KiVenF6+1FL3sCI/2tfH3wSszWL8Gkit8jUudTo5vDyLqEUXYDHlFUBwseudsPkUxPiQ6HuuFd3PiUAWf00chXD38eTjfapNu6VeQt4EORSO+rEXdhWihVb5HxFIVPTkqHmq1KINwtV9+thwE3hNMwacRa4gwTB1O+jadVlJQMq+kgwnLGLBcwr0W+x1ye6MPSYEUxSNFGHPG/evP9DRLwJtR3ngvlCDusnO+A75Nn40VYcoIjw6EN1V+plK+HkLye0zzLsnHIWTSGfZ2sQVG5xCURiI</X509Certificate><X509IssuerSerial><X509IssuerName>OU=DEMO, O=FINA, C=HR</X509IssuerName><X509SerialNumber>1053495409</X509SerialNumber></X509IssuerSerial></X509Data></KeyInfo></Signature></tns:PoslovniProstorOdgovor></soap:Body></soap:Envelope>

Coordinator
Nov 4, 2012 at 10:43 PM

<tns:SifraGreske>s002</tns:SifraGreske><tns:PorukaGreske>Certifikat nije izdan od strane FINA-e.</tns:PorukaGreske></tns:Greska></tns:Greske>

Obrati pažnju na boldani dio teksta. Jesi siguran da koristiš ispravan certifikat i da koristiš ispravnu metodu potpisa?

Nov 4, 2012 at 11:04 PM

Metoda koja meni predstavlja problem (request.GetResponse()) ima za ulogu citanje SIROVOG rezultata od strane servera (koji u ovom slucaju postoji - bez obzira na to sto certifikat nije ispravan).

Drugim rijecima donji kod bi trebao cijeli XML odgovor pridruziti response objektu ( a taj XML opisuje gresku u certifikatu)

Dim response As HttpWebResponse = request.GetResponse

 

Nov 5, 2012 at 12:09 AM

Evo, dobio sam informaciju da na istom mjestu program pukne i u originalnom solution-u.

Coordinator
Nov 5, 2012 at 12:38 AM
Edited Nov 5, 2012 at 12:42 AM

Probaj ovako:

U datoteci  Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav.cs napravi sljedeću izmjenu:

http://fiskalizacija.codeplex.com/Download/AttachmentDownload.ashx?ProjectName=fiskalizacija&WorkItemId=637&FileAttachmentId=256

 

U sample projektu,, ispod dijela gdje dobivaš odgovor sa servera (ili JIR, kod RacunZahtjev), stavi ovaj kod:

 

if (cis.OdgovorGreska != null) {
		Xml.XmlDocument docX = cis.OdgovorGreska;


		Xml.XmlNamespaceManager nsmgr = null;
		Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DodajNamespace(docX, nsmgr);
		Xml.XmlElement root = docX.DocumentElement;

		Xml.XmlNode nodeSifra = root.SelectSingleNode("soap:Body/tns:PoslovniProstorOdgovor/tns:Greske/tns:Greska/tns:SifraGreske", nsmgr);
		Xml.XmlNode nodeGreska = root.SelectSingleNode("soap:Body/tns:PoslovniProstorOdgovor/tns:Greske/tns:Greska/tns:PorukaGreske", nsmgr);

		txtSifraGreske.Text = nodeSifra.InnerText.Trim;
		txtOpisGreske.Text = nodeGreska.InnerText.Trim;

	}

 

Tako ćeš dobit ispravnu poruku sa servera..

Ili pričekaj verziju 1.2 :) tamo će se sve riješiti :)

Coordinator
Nov 5, 2012 at 7:41 AM

Da, ovaj je dio riješen u v1.2. koja će biti objavljena kroz dan-dva, nadamo se sutra tijekom dana.

Kod kojeg spominjete izgleda ovako:

catch (WebException ex)
{
    // prema sugestiji mladenbabic (http://fiskalizacija.codeplex.com/workitem/627)
    // prema sugestiji dkustec (http://fiskalizacija.codeplex.com/workitem/637)

    OdgovorGreskaStatus = ex.Status;
                
    WebResponse ipakPristigliErrorXmlResponse = ((WebException)ex).Response;
    if (ipakPristigliErrorXmlResponse != null)
    {
        using (Stream noviResponseStream = ipakPristigliErrorXmlResponse.GetResponseStream())
        {
            StreamReader responseReader = new StreamReader(noviResponseStream);
            OdgovorGreska = new XmlDocument();
            OdgovorGreska.Load(responseReader);

            Trace.TraceError("Gre�ka kod slanja SOAP poruke. Primljen odgovor od CIS-a, detalji gre�ke u CentralniInformacijskiSustav.OdgovorGreska.");
            throw;
        }
    }
    else
    {
        Trace.TraceError(String.Format("Gre�ka kod slanja SOAP poruke. Status gre�ke (prema http://msdn.microsoft.com/en-us/library/system.net.webexceptionstatus.aspx): {0}. Poruka gre�ke: {1}", ex.Status, ex.Message));
        throw;
    }
}

catch (Exception ex)
{
    Trace.TraceError(String.Format("Gre�ka kod slanja SOAP poruke: {0}", ex.Message));
    throw;
}

Obratite pažnju na novi property "OdgovorGreskaStatus", koji vraća status greške. 

Vezano na problem sa certifikatom, pogledaj i ovo: http://blog.fiskalizacija-dev.com.hr/post/2012/10/14/Kako-preuzeti-i-instalirati-democacert-Verifikacijskiroot-(samopotpisani)-certifikat-za-Demo-CA-.aspx

Coordinator
Nov 5, 2012 at 7:42 AM

E, da, dodali smo i 2 funkcije koje izvlače kod i poruku greške iz XML-a odgovora :)  (http://fiskalizacija.codeplex.com/workitem/628)

Nov 5, 2012 at 3:11 PM

Odlicno, jedva cekamo, strasni ste...