Ho un servizio WCF chiamiamolo UserService
. UserService
ha un riferimento a una libreria di classi. Chiamiamolo DoWork.dll
. Lo DoWork.dll
ha un riferimento al servizio WCF per un servizio diverso che chiameremo CompanyService
.Errore di configurazione dell'endpoint WCF: l'attributo 'contratto' non è valido?
Ora, quando ho provato a chiamare lo UserService
, avrei ricevuto un messaggio di errore non configurato. Dopo aver letto sul Web ho scoperto che ho bisogno di aggiungere le associazioni CompanyService
e le informazioni sul client nello UserService
web.config
sotto il nodo <system.serviceModel>
.
Eccolo:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IComapnyService" />
</basicHttpBinding>
</bindings>
<client>
<endpoint name="BasicHttpBinding_ICompanyService"
address="http://it-dev.company.local:81/Project/Copmpany/CompanyService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IComapnyService"
contract="CompanyService.ICompanyService" />
</client>
Il problema che ho è il contract="CompanyService.ICompanyService"
mi mostra l'errore:
The 'contract' attribute is invalid - The value 'CompanyService.ICompanyService' is invalid according to its datatype 'clientContractType' - The Enumeration constraint failed.
Ora, se aggiungo il riferimento CompanyService
direttamente al progetto UserService
WCF, la l'errore va via (ovviamente). Tuttavia, non dovrei farlo. Ho provato a qualificare completamente lo spazio dei nomi del contratto ICompanyService
e anche questo non funziona. Ho eliminato il file .suo e ricostruito il progetto e questo non funziona (suggerito altrove sul web). Inoltre, se si digita contract=
, ottengo l'elenco a discesa ma CompanyService.ICompanyService
non si trova da nessuna parte (solo quando faccio riferimento al servizio direttamente nel progetto UserService
).
Ho provato a configurarlo utilizzando Tools > WCF Service Configuration Editor
e questo non aiuta.
Devo notare che tutto sembra funzionare bene, ma non mi piace il fatto che intellisense mi stia dando la sottolineatura blu ondulata e quel messaggio di errore. Ho la sensazione che ho bisogno di qualcos'altro nello web.config
per farlo funzionare poiché il UserService
fa riferimento allo DoWork.dll
, che a sua volta fa riferimento allo CompanyService
il cui contratto non riesco a vedere correttamente.
Qualsiasi suggerimento è molto apprezzato. Grazie in anticipo.
Mi sono imbattuto recentemente in questo e ho scoperto che in realtà includere lo spazio dei nomi completo stava contribuendo ai miei problemi. Utile da notare per chiunque altro con questo problema. – Ian