Gå til innhold

Foto

WCF service som timer ut ved upload


3 svar i denne tråden

#1 HDSoftware

HDSoftware

    Bruker

  • Medlemmer
  • 2 236 innlegg
  •   26. september 2006

Skrevet 5. april 2019 - 09:56

Heisan folkens..

 

Jeg har en web service basert på WCF.  Jeg har også en klient laget til dette.

Web servicen er utveksling av dokumenter. Altså upload og download.  Jeg har satt en begrensning på 30MB så det er jo ikke så store dokumentene vi snakker om.  Men noen kunder begynner å rapportere exceptions i noen tilfeller.  Så jeg kjører igang en lab test og lager noen filer tett opp mot 30MB og setter igang.  Det går kjempe fint å laste ned fra servicen, men å laste opp stopper seg når filen blir litt stor.  Feilmeldingen sier 

System.ServiceModel.EndpointNotFoundException: Det var ingen endepunkter som lyttet på http://localhost:56376/MyService.svc, som kunne godta meldingen. Dette skyldes ofte en feil adresse eller SOAP-handling. Se InnerException, hvis tilgjengelig, hvis du vil ha flere detaljer. ---> System.Net.WebException: Den eksterne serveren returnerte feilen (404) Finner ikke filen.
   ved System.Net.HttpWebRequest.GetResponse()
   ved System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   --- Slutten på sporingen av intern unntaksstakk ---

Server stack trace: 
   ved System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)
   ved System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   ved System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   ved System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
   ved System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   ved System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   ved System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)


Som nevnt så fungerer det som bare det hvis filen ikke er så stor, 15MB er for eksempel akseptert av servicen.

Siden Exceptionen nevner Timeout så er det jo nærliggende å tippe at dette er årsaken.  Jeg har satt 10 minutter på timeout i klientens app.config, men det vil jeg tro bare gjelder for "download".  For at servicen skal kunne ta imot noe som tar mer enn en eller annen mikro default så må det vel være mulig å sette denne også.

 

Jeg ser i web.config på prosjektet og der finner jeg en del bindings, men greier liksom ikke helt å se hvilken av dem jeg skal bruke.  Dessuten virker det som at NAME attributten må inneholde FQN og det betyr jo at config filen må endres hvis servicen flyttes eller installeres på flere steder.

 

Noen som vet hva jeg kan gjøre?

 

Den aller beste løsningen for meg ville være om det lot seg gjøre å sette dette by code

 


  • 0
---------------------------------------------------------
Ole Morten Heien
HD Software
---------------------------------------------------------

#2 MailMan13

MailMan13

    Bruker

  • Medlemmer
  • 2 393 innlegg
  •   2. august 2001

Skrevet 9. april 2019 - 16:58

WCF gir 4xx-statuskode hvis innlesing og deserialisering av innkommen melding går galt. Hvis det går galt over en viss meldingsstørrelse er det sannsynligvis maxRecievedMessageSize, eller en av bufferstørrelsene på bindingen på serversiden som er for liten.

Du skal kunne se mer detaljert feil i trace på servererside her.

Dette innlegget har blitt redigert av MailMan13: 9. april 2019 - 16:58

  • 0

#3 Emsal

Emsal

    Bruker

  • Medlemmer
  • 875 innlegg
  •   28. august 2008

Skrevet 9. april 2019 - 17:25

Er du sikker på at du har konfigurert serveren riktig? Her er det en som får samme feil bare at han prøver å sende en mye større fil.

https://forums.asp.n...ng WCF Service
  • 0

#4 HDSoftware

HDSoftware

    Bruker

  • Medlemmer
  • 2 236 innlegg
  •   26. september 2006

Skrevet 10. april 2019 - 14:37

Takk til dere begge.  Problemet var rett og slett at meldingspakken jeg sendte oversteg 30MB, som er den øvre grensen (default) på selve servereren. Om dette er en standard begrensning i IIS eller ikke vet jeg lite om.

 

Dette løste seg enkelt ved å legge til følgende tags i web.config:

<system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="102400000"/>
      </requestFiltering>
    </security>
</system.webServer>
 
Jeg klinte til med 1GB liksågreit - haha, dette er foreløpig bare på test serveren så jeg skal fintune dette bedre.
 
Takker uansett for begge inspillene ;-)

  • 0
---------------------------------------------------------
Ole Morten Heien
HD Software
---------------------------------------------------------


0 bruker(e) leser denne tråden

0 medlemmer, 0 gjester, 0 skjulte brukere