2009-11-09 11 views
0

J'ai une bibliothèque de service WCF écrite en .NET 4.0. J'ai une application WCF (afin d'héberger ce service dans IIS) au sein de la même solution. Il contient la référence d'assembly de bibliothèque WCF et un fichier service.svc pointant vers le service de la bibliothèque avec un fichier web.config qui est une réplique du fichier app.config de la bibliothèque de services WCF. L'application WCF est configurée pour héberger le service dans IIS7 (le répertoire virtuel a été défini). La même solution contient une solution ASP.NET Webforms à laquelle j'ai ajouté une référence de service pointant vers le service WCF que j'ai hébergé dans IIS (comme mentionné). Lorsque je démarre une instance de cette application Web ASP.NET, un message indique que le service WCF a été hébergé et que l'application ASP.NET peut y accéder correctement. Toutefois, lorsque j'essaie d'accéder à ces données via une référence de service ajoutée à une application Web MVC 2 sur la même machine dans une solution différente (pointant vers le service hébergé dans IIS), j'obtiens un message "Le serveur distant a renvoyé une erreur: 405) Méthode non autorisée. " exception de protocole. Toutefois, l'application MVC peut accéder aux données de service si j'appelle manuellement une instance de l'application WCF que j'utilisais pour héberger la bibliothèque de services WCF à partir de l'autre solution. J'utilise VS2010 Beta 2 comme IDE de développement. Je suis coincé avec ce problème depuis un moment maintenant. Toute aide serait appréciée.Impossible d'héberger correctement le service WCF dans IIS7

Ma config de service est la suivante: -

<system.serviceModel> 
<services> 
    <service behaviorConfiguration="CruxServices.BasicSearchServiceBehavior" 
    name="CruxServices.BasicSearch.BasicSearch"> 
    <endpoint address="" binding="wsHttpBinding" name="WSBindingEndpoint" bindingConfiguration="WSBindingConfig" 
     contract="CruxServices.BasicSearch.Interfaces.IPropertyListFilter"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" name="MexEndpoint" 
     contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost/CruxServices" /> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="CruxServices.BasicSearchServiceBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<bindings> 
    <wsHttpBinding> 
    <binding name="WSBindingConfig"> 
     <security mode="None"> 
     <transport clientCredentialType="None"/> 
     <message establishSecurityContext="false"/> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

Répondre

0

Dans la configuration de IIS vous spécifiez la version du framework .net que vous souhaitez utiliser.

Dans ce contexte, il y a 4 versions du framework .net: 1.0, 1.1, 2.0 et 4.0

Votre premier problème est que IIS n'est pas configuré pour exécuter Framework 4.0

Vous pouvez cependant vous pouvez ont un plus gros problème, je ne sais pas s'il est possible, vous devrez peut-être IIS 7.5

EDIT

ont maintenant vérifié. Cela fonctionnera, la seule chose que vous devez faire est de vous assurer que framework 4 est sélectionné comme framework pour le pool d'applications.

+0

Salut Shiraz, merci d'avoir répondu. Je cours ceci sur une boîte de Windows 7 qui vient avec IIS 7.5. J'ai VS2010 installé ainsi .NET 4.0 est installé et c'est une application .NET 4.0 MVC 2. – user206736