135 messaggi dal 01 febbraio 2017
Salve a tutti, nelle more di approfondire la mia conoscenza della sicuerzza in WCF, sto facendo delle prove, però ricevo un errore :

Tipo di contenuto text/xml; charset=utf-8 non supportato dal servizio http://localhost/servicemodelsamples/service.svc. I binding del client e del servizio potrebbero non corrispondere.


questo il file di configurazione del client :
<?xml version="1.0"?>
<configuration>
  <system.serviceModel>

    <client>
      <!-- passing "basic" into the constructor of the CalculatorClient class selects this endpoint-->
      <endpoint name="basic" address="http://localhost/servicemodelsamples/service.svc" binding="basicHttpBinding" contract="Microsoft.ServiceModel.Samples.ICalculator"/>
      <!-- passing "secure" into the constructor of the CalculatorClient class selects this endpoint-->
      <endpoint name="secure" address="http://localhost/servicemodelsamples/service.svc/secure" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.ICalculator"/>
    </client>

  </system.serviceModel>

<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>


E questa la configurazione del server :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="Microsoft.ServiceModel.Samples.CalculatorService">
        <!-- this endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc  -->
        <endpoint address=""
                  binding="basicHttpBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <!-- secure endpoint exposed at {base address}/secure: http://localhost/servicemodelsamples/service.svc/secure -->
        <endpoint address="secure"
                  binding="wsHttpBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <!-- the mex endpoint is exposed at http://localhost/servicemodelsamples/service.svc/mex -->
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>

    <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>

</configuration>


Sembra un problema di codifica fra il client e server che nn si capiscono, ma se lascio il tutto non indicato, dovrebbe andare di default ?
Quindi entrambi dovrebbero avere le stesse impostazioni ?

Grazie in anticipo.

Gino.

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]
135 messaggi dal 01 febbraio 2017
Faccio presente che è il semplice e banale esempio della documentazione ufficiale di microsoft ... e se non funzionano manco gli esempi forniti da essa stessa ... siamo proprio alla frutta !

Qualcuno ha mai provato ad eseguirne qualcuno ?

La parte che mi piace di più è quando cercano di facilitarci la vita (forse un pò hanno coscienza delle fesserie che fanno) e ti scrivono le istruzioni passo passo, sempre ovviamente seguendo la catena dei link.

Alla fine della catena troviamo qualcosa del tipo :
esecuzione dell'esempio sullo stesso PC
...
apri l'utilità dei comandi di visual studio
fai questo e poi quest'altro
..
e fin qui posso capire

esecuzione dell'esempio su due pc diversi
posizionarsi sul PC che funzionerà da Client
...
apri l'utilità dei comandi di visual studio
...
pezzo di idiota (riferito a chi l'ha scritto) se è un pc diverso da quello di sviluppo, mica c'è installato visual studio, e tanto meno può esserlo nel PC dove funzionerà la parte SERVER, magari c'è IIS
..

E continuo ... dicevo nell'altra discussione, si va avanti per tornare indietro, con tutta la tecnologia WCF, ci siamo ridotti ad editare a manuzza un file di testo, che tanto comprensibile non è .
Il formato XML non è proprio immediato, e la documentazione (parlo dei file .config) scarsa, se non a livello di classi e servizi.

Capisco che nell'impeto di avvicinarsi sempre più all'ambiemte OPEN tipico di Linux la configurazione dei programmi/servizi, tramite l'editazione di file di testo è una cosa naturale, però c'è (e c'è sempre stata) una grande differenza.

Con Unix qualche anno fa (anche decennio o ventennio), con un semplice 286' con 1 Mb (si un megabyte di memoria) ed una multiporta seriale, si metteva su un server che serviva appunto anche 8 PC in modalità testo (TTY), mentre per fare la stessa cosa con windows 3.1 ai tempi ci voleva un windows for Workgroup, e mega e mega di memoria, schede di rete, software di gestione lanman (c'era anche un software su 12 dischetti della Novell, sto andando a memoria), ed alla fine con quale velocità ?

Andando avanti negli anni, il mondo free con Linux ha acquisito la grafica e la leggerezza è rimasta, mentre per fare girare un windows oggi, ci vogliono fior di macchine.

Ma torniamo a noi, per far girare visual studio 2015 agilmente ci vuole il doppio della memoria che usavo in visual studio 2008, e questo analogamente a quello che succede al sistema operativo.

Avete mai visto un windows "in servizio" quanti Gb di spazio sprecato dalla cartella windows ?
Si supera facilmente i 25Gb !!!

Motivo ?
Semplice in casa microsoft non sanno sviluppare software, per cui usano una tecnica "incrementale", l'aggiunta di nuove funzioni, prevede l'aggiunta di codice, e nessuno che si azzarda ad andare a rivedere (o non parliamo poi di ottimizzare) il codice già presente, magari scritto da altri.
Se invece perdessero più tenpo per andare a rivedere il codice per amalgamare, riutilizzare ed ottimizzare più oggetti che magari fanno cose simili... e meno male che l' OOP doveva servire per scrivere/produrre meno codice, utilizzando concetti (astratti in casa MS a questo punto devo dire) come polimorfismo, ereditarietà e ....

Basta mi fermo qui per stasera.

E così le DLL crescono, i programmi diventano pesanti (a livello utente), e si perde il controllo del codice (a livello developer).

Gino.

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]
135 messaggi dal 01 febbraio 2017
Anno nuovo vita nuova ... eheheheh .... macchè neanche nel forum ufficiale microsoft nessuno è stato in grado di rispondere e/o tentare di risolvere l'esempio citato.

A quanto pare la logica è un bene astratto (e prezioso), si va avanti a tentativi, ed il problema è ancora lì non risolto ... nè lì ... ne qui !
...

forse conviene cambiare forum ....
Modificato da SensoBit il 03 gennaio 2018 11.57 -

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]
11.886 messaggi dal 09 febbraio 2002
Contributi
Dovresti ricreare una soluzione minimale in cui si possa osservare il problema e pubblicarle il codice su GitHub. Se semplifichi le cose a chi ti legge, è più probabile che tu riceva una risposta.

Dico "più probabile" e non "sicuro" perché se ti presenti con pregiudizi del genere:

pezzo di idiota
quanti Gb di spazio sprecato
la logica è un bene astratto
forse conviene cambiare forum

...a me personalmente riduce la volontà di spendere il tempo libero per trovarti una soluzione.

ciao,
Moreno

Enjoy learning and just keep making
135 messaggi dal 01 febbraio 2017
BrightSoul ha scritto:
Dovresti ricreare una soluzione minimale in cui si possa osservare il problema e pubblicarle il codice su GitHub. Se semplifichi le cose a chi ti legge, è più probabile che tu riceva una risposta.

Dico "più probabile" e non "sicuro" perché se ti presenti con pregiudizi del genere:

pezzo di idiota
quanti Gb di spazio sprecato
la logica è un bene astratto
forse conviene cambiare forum

...a me personalmente riduce la volontà di spendere il tempo libero per trovarti una soluzione.

ciao,
Moreno

Ciao Moreno, ti ringrazio per la risposta, ti replico in ordine inverso, così ti rimane il dolce ... eheheh ...

Effettivamente ad una lettira superficiale la frase che tu hai evidenziato sembrerebbe "pesante", ma se noti bene non ho iniziato la discussione con quella frase, ma ho inserito un secondo messaggio, dopo che erano passati quasi due giorni (alle 8 di mattino alle 18 del giono dopo), senza ottenere nessuna risposta.
Poi aggiungo che l'affermazione che ti ha "levato la volontà di spendere tempo" non è rivolta al lettore, ma a chi ha scritto la pagina della documentazione Microsoft, ed è solo millesimamente rappresentitiva della rabbia e frustrazione di chi scrive, dopo aver perso giorni, settimane ad inseguire, spulciare documentazione ufficiale, forum ed altre amenità per "solamente" comprendere come sfruttare un certo "accrocco" per poi configurarlo per la necessità (non ci lamentiamo poi di alcune "mancanze" dei sistemisti della sogei, che anche a questo punto diventano oomprensibili), e senza risolvere nulla, poichè tutti i problemi del WCF che ho rilevato (e scritto in questo forum) sono ancora lì, presenti e non risolti. Ed ho perso oramai quasi due mesi dietro a questa cosa, tanto che sto valutando di abbandonare ....

Ed ora passo alla risposta, le righe di codice da me pubblicate, sono degli esempi presi dalla pagina ufficiale relativa alla documentazione microsfot (MS) su questo servizio, e come tale hanno già un SET limitato e semplificato, in quanto hanno lo scopo di far capire come implemetare una parte della caratteristica del servizio a cui fanno riferimento. In questo caso l'utilizzo di più endpoint con lo stesso contratto.

Come tale il minimo che mi aspetto è che FUNZIONINO, così come sono presentati. Il codice, in questo caso il file APP.config e WEB.config sono già ridotti all'osso. Mentre la parte in codice che implementa il servizio sono 4 righe di codice dummy (una semplificazione del famoso esempio Calculator).

Questa la pagina in questione :
https://msdn.microsoft.com/it-it/library/ms751515(v=vs.110).aspx

Quindi è già codice di pubblico dominio, certo posso andare a modificare a manuzza la codifica e forzarl, ma se MS mi dà l'esempio così, chi sono io per andarlo a cambiare ?

Grazie per il tempo speso per rispondermi, e non lo dico sarcasticamente. ;-)

Gino.

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]
11.886 messaggi dal 09 febbraio 2002
Contributi
TL;DR

Condividi su GitHub una soluzione in cui si possa osservare il problema. Io la forko e se sono in grado di risolvere il problema ti mando una pull request.

Moreno

Enjoy learning and just keep making
135 messaggi dal 01 febbraio 2017
Che parole complicate forcare, pull req, mai usato GitHub, sono nuovo dell'ambiente ... :-(
Proverò comunque nei prox giorni, oramai ho abbandonato il progetto.

L'esempio infatti doveva essere una traccia di come implementare wsHttpBinding, e da quello che ho capito studiando al documentazione. L'esempio non potrà funzionare in un'applicazione reale, poichè serve un sistema di autenticazione.

E questo necessita di diversi meccanismi, che nell'esempio (ovviamente) nn sono citati.

Purtroppo quegli .. ops, i "signori" della MS che hanno scritto la KB si sono concentrati sull'autenticazione Server, che mi sembra invece un caso meno frequente in un'applicazione reale.

Difatti un server che eroga dei servizi, necessita di autenticare il client per sapere se è autorizzato ad usarli i no, e non viceversa.

Il client usa già un indirizzo per "trovare" il server, e quindi l'autenticazione server è secondaria. Certo può essere importante, non ho detto che non è necessaria ma ...

Quindi anche se l'esempio funziona, poi dovrà essere sviluppato, dato che nn fa uso di nessuna tecnica di autenticazione, è probabile che funzioni (se qualcuno riuscirà a farlo funzionare), solo sullo stesso PC.

Spero di essermi capito ... eheheheh ....

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]
11.886 messaggi dal 09 febbraio 2002
Contributi

Quindi anche se l'esempio funziona, poi dovrà essere sviluppato, dato che nn fa uso di nessuna tecnica di autenticazione, è probabile che funzioni (se qualcuno riuscirà a farlo funzionare), solo sullo stesso PC.

Per l'appunto dovresti fornire una soluzione minimale che ricalchi il tuo scenario. Non mi aspetto che tu includa un database: se c'è autenticazione puoi simularla in questo modo.
if (Username == "mario" && Password == "rossi") {
  //esegui l'operazione
}


mai usato GitHub

Carica uno zip su Google Drive, andrà bene lo stesso.

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.