J'ai une solution qui contient deux projets. Un projet est un ASP.NET Projet d'Application Web, et l'autre est une bibliothèque de classe. L'application web a un projet de référence pour la bibliothèque de classe. Aucune de ces est fortement nommé.
Dans la bibliothèque de classe, que je vais appeler "Cadre de," je avoir un comportement de point de terminaison (un IEndpointBehavior mise en œuvre) et un élément de configuration (une classe dérivée de BehaviorExtensionsElement). L'élément de configuration est si je peux joindre le comportement de point de terminaison à un service via la configuration.
Dans l'application web, j'ai un AJAX service WCF. Dans le web.config, j'ai l'AJAX de service configuré pour utiliser mon comportement personnalisé. Le système.serviceModel section de la configuration est assez classique et ressemble à ceci:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="MyEndpointBehavior">
<enableWebScript />
<customEndpointBehavior />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service name="WebSite.AjaxService">
<endpoint
address=""
behaviorConfiguration="MyEndpointBehavior"
binding="webHttpBinding"
contract="WebSite.AjaxService" />
</service>
</services>
<extensions>
<behaviorExtensions>
<add
name="customEndpointBehavior"
type="Framework.MyBehaviorExtensionsElement, Framework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</behaviorExtensions>
</extensions>
</system.serviceModel>
Au moment de l'exécution, cela fonctionne parfaitement. L'AJAX service WCF utilise correctement mes personnalisé configuré comportement de point de terminaison.
Le problème est que lorsque j'essaie d'ajouter une nouvelle AJAX service WCF. Si je dois Ajouter -> Nouvel Élément... et sélectionnez "AJAX Service WCF," je peux le regarder ajouter l' .svc fichier et le code-behind, mais quand il arrive à la mise à jour sur le web.fichier de config, j'ai cette erreur:
Le fichier de configuration n'est pas valide d'un fichier de configuration pour le Service WCF Bibliothèque.
Le type de Cadre.MyBehaviorExtensionsElement, Framework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null', enregistré pour l'extension 'customEndpointBehavior' n'a pas pu être chargé.
Évidemment, la configuration est tout à fait valable, car il fonctionne parfaitement lors de l'exécution. Si je supprime l'élément de mon comportement de configuration temporaire, puis ajouter l'AJAX Service WCF, tout se passe sans accroc.
Malheureusement, dans un projet plus vaste où nous aurons de multiples services avec différentes configurations, de supprimer tous les comportements personnalisés temporairement va être sujettes à erreur. Alors que je me rends compte que je pouvais aller sans l'aide de l'assistant et de tout faire manuellement, tout le monde ne peut, et il serait agréable d'être en mesure d'utiliser le produit comme il est destiné à être utilisé - assistants et tous.
Pourquoi ce n'est pas ma coutume WCF comportement extension type d'élément trouvé?
Mises à jour/précisions:
- Il fonctionne au moment de l'exécution, tout simplement pas le temps de conception.
- Le Cadre de l'assemblée est dans le web dossier bin du projet lorsque je tente d'ajouter le service.
- Alors que je pouvais ajouter des services manuellement ("sans configuration"), j'ai besoin de l'out-of-the-box modèle d'élément de travail - c'est le but de la question.
- Ce problème est d'être vu dans Visual Studio 2008. Dans VS 2010, ce qui semble être résolu.
J'ai déposé cette question sur Microsoft Connect, et il s'avère que vous avez de mettre votre configuration personnalisée de l'élément dans le cas ou le mettre dans l'IDE dossier. Ils ne seront pas en la fixant, au moins pour l'instant. J'ai posté la solution qu'ils ont fournis comme la "réponse" à cette question.