Ho cercato di effettuare il porting di un servizio Web legacy WSE 3 a WCF. Poiché il mantenimento della retrocompatibilità con i client WSE 3 è l'obiettivo, ho seguito le indicazioni in questo article.Errore HTTP 400 Errore di richiesta che tenta di aggiungere riferimento Web al servizio WCF
Dopo molte prove ed errori, posso chiamare il servizio WCF dal mio client WSE 3. Tuttavia, non sono in grado di aggiungere o aggiornare un riferimento Web a questo servizio da Visual Studio 2005 (con WSE 3 installato). La risposta è "La richiesta non è riuscita con lo stato HTTP 400: Richiesta non valida". Ottengo lo stesso errore cercando di generare il proxy utilizzando l'utilità wsewsdl3. Posso aggiungere un riferimento di servizio utilizzando VS 2008.
Ho provato ad ospitare il servizio in IIS 7.5 su Windows 7 e Windows 2008 Server R2 con lo stesso risultato. Qualche soluzione o suggerimenti per la risoluzione dei problemi?
Qui ci sono le sezioni rilevanti dal file di configurazione per il mio servizio WCF.
<system.serviceModel>
<services>
<service behaviorConfiguration="MyBehavior"
name="MyService">
<endpoint address="" binding="customBinding" bindingConfiguration="wseBinding"
contract="IMyService" />
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<customBinding>
<binding name="wseBinding">
<security authenticationMode="UserNameOverTransport" />
<mtomMessageEncoding messageVersion="Soap11WSAddressingAugust2004" />
<httpsTransport/>
</binding>
</customBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="MyBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="MyCustomValidator" />
</serviceCredentials>
<serviceAuthorization principalPermissionMode="UseAspNetRoles" roleProviderName="MyRoleProvider" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
UPDATE: Dopo aver provato il suggerimento tracciamento di Paul, ho stabilito che l'eccezione è System.Xml.XmlException: Il corpo del messaggio non può essere letto, perché è vuota
Purtroppo, questo non sembra essere di grande aiuto. Un'altra cosa che ho notato è che c'era un attributo httpsGetEnabled separato dell'elemento serviceMetadata. L'ho aggiunto e impostato su true poiché si tratta di un servizio https, ma il risultato è stato lo stesso. Sembra che per qualche motivo WCF non stia riconoscendo che questa è una richiesta di metadati.
quando digiti l'URL wsdl in IE lo vedi?se aggiungi un riferimento da VS 2010 funziona? –