Je suis nouveau à WCF et travaille sur un projet où je construis une bibliothèque WCF qui est appelée par un projet Web (ASP.NET 2.03.5/C#).Appel de service Lbrary à partir de Web Project - Que se passe-t-il dans Web.Config?
J'ai quelques choses à faire ici.
1) J'ai fourni un contrat de compliment (IJSON) pour mes contrats SOAP (ISOAP) pour mes méthodes Web JSON. 2) J'ai un contrat, IFileTransferService, qui gère le streaming de fichiers .
Pouvez-vous s'il vous plaît jeter un oeil à mon app.config et les fichiers web.config et me dire s'ils ont l'air correct ou si je reproduis ce qui est dans mon App.Config dans mon web.config inutilement? Si j'utilise une bibliothèque de services, ai-je vraiment besoin de faire des choses deux fois (déclarer des services, des liaisons, etc.)? Cela ressemble-t-il à ?
Aussi, tous les autres commentaires stylistiques/constructifs concernant ce que j'ai dans side system.serviceModel sont toujours appréciés.
Merci pour votre temps.
web.config
<system.serviceModel>
<client>
<endpoint name="MySOAPAuthEP"
address="http://localhost:1241/WebProj/auth.svc/soap"
binding="basicHttpBinding"
bindingConfiguration="soapWeb"
contract="Project.WebAPI.Authentication.ISOAPAuthService" />
<endpoint name="MySOAPTradeEP"
address="http://localhost:1241/WebProj/trade.svc/soap"
binding="basicHttpBinding"
bindingConfiguration="soapWeb"
contract="Project.WebAPI.Trade.ISOAPTradeService" />
<endpoint name="MySOAPFileTransferEP"
address="http://localhost:1241/WebProj/filetransfer.svc/soap"
binding="basicHttpBinding"
bindingConfiguration="httpLargeDataStream"
contract="Project.WebAPI.FileTransfer.ISOAPFileTransferService" />
<endpoint name="MyJSONAuthEP"
binding="webHttpBinding"
bindingConfiguration="jsonWeb"
contract="Project.WebAPI.Authentication.IJSONAuthService" />
<endpoint name="MyJSONTradeEP"
binding="webHttpBinding"
bindingConfiguration="jsonWeb"
contract="Project.WebAPI.Trade.IJSONTradeService" />
<endpoint name="MyJSONFileTransferEP"
binding="webHttpBinding"
bindingConfiguration="jsonWeb"
contract="Project.WebAPI.FileTransfer.IJSONFileTransferService" />
</client>
<bindings>
<basicHttpBinding>
<binding name="soapWeb" />
<binding name="httpLargeDataStream" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" maxBufferSize="65536"
maxReceivedMessageSize="2147483647" messageEncoding="Mtom" transferMode="Streamed">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpBinding>
<webHttpBinding>
<binding name="jsonWeb" maxBufferSize="1500000" maxBufferPoolSize="1500000"
maxReceivedMessageSize="1500000">
<readerQuotas maxDepth="32" maxStringContentLength="656000" maxArrayLength="656000"
maxBytesPerRead="656000" maxNameTableCharCount="656000" />
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="WebHttpEPBehavior">
<webHttp />
</behavior>
<behavior name="BasicHttpEPBehavior" />
</endpointBehaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>
<service behaviorConfiguration="Default" name="Project.WebAPI.Trade.TradeService">
<endpoint address="json" behaviorConfiguration="WebHttpEPBehavior"
binding="webHttpBinding" name="MyJSONTradeEP" contract="Project.WebAPI.Trade.IJSONTradeService" />
<endpoint address="soap" binding="basicHttpBinding" name="MySOAPTradeEP"
contract="Project.WebAPI.Trade.ISOAPTradeService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:1243/WebProj/trade.svc" />
</baseAddresses>
</host>
</service>
<service behaviorConfiguration="Default" name="Project.WebAPI.Authentication.AuthService">
<endpoint address="json" behaviorConfiguration="WebHttpEPBehavior"
binding="webHttpBinding" name="MyJSONAuthEP" contract="Project.WebAPI.Authentication.IJSONAuthService" />
<endpoint address="soap" binding="basicHttpBinding" name="MySOAPAuthEP"
contract="Project.WebAPI.Authentication.ISOAPAuthService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:1242/WebProj/auth.svc" />
</baseAddresses>
</host>
</service>
<service behaviorConfiguration="Default" name="Project.WebAPI.FileTransfer.FileTransferService">
<endpoint address="json" behaviorConfiguration="WebHttpEPBehavior"
binding="webHttpBinding" name="MyJSONFileTransferEP" contract="Project.WebAPI.FileTransfer.IJSONFileTransferService" />
<endpoint address="soap"
binding="basicHttpBinding"
name="MySOAPFileTransferEP"
bindingConfiguration="httpLargeDataStream"
contract="Project.WebAPI.FileTransfer.ISOAPFileTransferService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:1244/WebProj/filetransfer.svc" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
App.Config
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<bindings>
<basicHttpBinding>
<binding name="soapWeb" />
<binding name="httpLargeDataStream"
maxReceivedMessageSize="2147483647"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00"
transferMode="Streamed"
messageEncoding="Mtom"
maxBufferSize="65536">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
<webHttpBinding>
<binding name="jsonWeb" maxBufferSize="1500000" maxBufferPoolSize="1500000"
maxReceivedMessageSize="1500000">
<readerQuotas maxDepth="32" maxStringContentLength="656000" maxArrayLength="656000"
maxBytesPerRead="656000" maxNameTableCharCount="656000" />
</binding>
</webHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="Default" name="Project.WebAPI.Trade.TradeService">
<endpoint address="json" behaviorConfiguration="WebHttpEPBehavior"
binding="webHttpBinding" name="MyJSONTradeEP" contract="Project.WebAPI.Trade.IJSONTradeService" />
<endpoint address="soap" binding="basicHttpBinding" name="MySOAPTradeEP"
contract="Project.WebAPI.Trade.ISOAPTradeService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:1243/WebProj/trade.svc" />
</baseAddresses>
</host>
</service>
<service behaviorConfiguration="Default" name="Project.WebAPI.Authentication.AuthService">
<endpoint address="json" behaviorConfiguration="WebHttpEPBehavior"
binding="webHttpBinding" name="MyJSONAuthEP" contract="Project.WebAPI.Authentication.IJSONAuthService" />
<endpoint address="soap" binding="basicHttpBinding" name="MySOAPAuthEP"
contract="Project.WebAPI.Authentication.ISOAPAuthService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:1242/WebProj/auth.svc" />
</baseAddresses>
</host>
</service>
<service behaviorConfiguration="Default" name="Project.WebAPI.FileTransfer.FileTransferService">
<endpoint address="json" behaviorConfiguration="WebHttpEPBehavior"
binding="webHttpBinding" name="MyJSONFileTransferEP" contract="Project.WebAPI.FileTransfer.IJSONFileTransferService" />
<endpoint address="soap" binding="basicHttpBinding" name="MySOAPFileTransferEP"
contract="Project.WebAPI.FileTransfer.ISOAPFileTransferService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:1244/WebProj/filetransfer.svc" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="WebHttpEPBehavior">
<webHttp />
</behavior>
<behavior name="BasicHttpEPBehavior" />
</endpointBehaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Merci Marc.J'ai suivi votre conseil et j'ai juste quitté la section dans mon web.config mais je n'arrive pas à l'exécuter. J'obtiens l'erreur suivante: Service 'AuthService' a zéro point de terminaison d'application (non-infrastructure). Cela peut être dû au fait qu'aucun fichier de configuration n'a été trouvé pour votre application ou qu'aucun élément de service correspondant au nom de service n'a pu être trouvé dans le fichier de configuration ou qu'aucun point de terminaison n'a été défini dans l'élément de service. Je me souviens que j'avais cette erreur quand j'ai commencé et résolu en vidant les services et les liaisons dans Web.config. Des idées? Merci encore. –
Où hébergez-vous votre classe de service? IIS? Ensuite, vous avez besoin du '' dans votre web.config, et de votre '' (mais pas de "services") dans le client app.config qui accède à ce service –
Merci encore. Non, je suis auto-hébergeant pour le développement en ce moment. –