Le service WCF hébergé par IIS renvoie HTTP 400 Bad Request
J'ai été chercher pendant des heures, mais je ne pouvais pas trouver la solution. Je vais expliquer brièvement.
J'apprends des Services WCF. Je viens de créer un service et de le parcourir. Voici le fichier de configuration:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="EmployeeServiceBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="EmployeeServiceBehaviour" name="EmployeeConfiguration">
<endpoint address="http://localhost:2005/EmployeeService.svc" binding="basicHttpBinding"
bindingConfiguration="" contract="IEmployeeConfiguration" />
</service>
</services>
</system.serviceModel>
<system.web>
<compilation debug="true"/>
</system.web>
<system.webServer>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
Lorsque le parcourir à partir de Visual Studio, il n'y a aucun problème. Il fonctionne parfaitement.
Deuxième, je suis en train de le publier sur IIS. Ce que je fais est-ce:
Je publie un dossier et d'ajouter ce service à IIS.
J'sélectionnez le port 3006 comme un port.
En dessous de son fichier de configuration. Notez que j'ai aussi changé de port à l'intérieur de config pour 3006
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="EmployeeServiceBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="EmployeeServiceBehaviour" name="EmployeeConfiguration">
<endpoint address="http://localhost:3006/EmployeeService.svc" binding="basicHttpBinding"
bindingConfiguration="" contract="IEmployeeConfiguration" />
</service>
</services>
</system.serviceModel>
<system.web>
<compilation/>
</system.web>
<system.webServer>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
Et je suis en attente d'exécution en douceur, mais:
IIS me donne une page blanche à partir de Chrome
Et HTTP 400 Bad Request à partir de l'Explorateur
Enfin, si je supprime l'adresse de la partie à partir du fichier de config, tout fonctionne bien. Mais d'autres confondre, c'est que, sur mon autre ordinateur après le scénario ci-dessus(adresse), je peux accéder à un service. Alors, j'ai vraiment fatigué de chercher pourquoi c'est en travaillant sur un ordinateur et ne fonctionne pas sur un autre. Quelqu'un pourrait-il m'expliquer?
Je sais que c'est un peu plus long, mais je dois l'expliquer clairement.
Grâce
source d'informationauteur Omer K
Vous devez vous connecter pour publier un commentaire.
Selon mes recherches je ne devrait pas fournir une adresse.
msdn.microsoft.com/en-us/library/aa751792(v=vs. 110).aspx
Je pense que cela permettra de résoudre votre problème:
Ajouter ce paramètre à votre service:
Et modifier le
name
attribut de laservice
à votre service de la classe nom complet:Espère que c'est assez
Cela peut être de l'aide. ive vient de passé plus de 2 heures à essayer d'obtenir ce travail. j'utilise FF et son défini comme navigateur par défaut.
dans FF, il a été l'ajout d'un /à la fin de mon URL
qui a retourné un
NetworkError: 400 Bad Request
toutefois, dans IE ou chrome, il ne marche pas mettre le /à la fin et il fonctionne très bien.
une chose à noter.. même dans les FF qui a été de me donner une 400 bad request, la
?wdsl
a fait un travailil semble que l' /a été à l'origine du problème
Vous pouvez essayer de violoneux et aussi essayer de le svcTracer qui peut vous donner beaucoup d'informations de débogage sur le dessus de cela, vous pouvez également utiliser
includeExceptionDetailInFaults=true
le drapeau sur le serveur mais il est important de marquer que ce n'est pas toujours de droite à envoyer cette information au client spécialement si le client est une entité externe. Avec cet avertissement suivant est le soupçon de comment l'utiliser.Heureux de débogage 🙂