Service web ASMX pour autoriser l'accès anonyme

Je suis en train de vivre une autorisation d'erreur pour un service web asmx que j'ai développé. Le service web lui-même ne nécessite pas d'identification de l'utilisateur, mais il semble que le service web est configuré pour le faire valoir, même si j'ai essayé de définir la configuration, comme par exemple pour permettre l'accès anonyme:

J'ai mis le correspondant de site web dans IIS pour permettre l'accès anonyme:

Service web ASMX pour autoriser l'accès anonyme

En outre, j'ai inclus les lignes suivantes dans le web.config:

<configuration>
    ...
    <system.web>
        ...
        <authorization>
            <allow users="*"/>
        </authorization>
        ...
    </system.web>
    ...
</configuration>

Lorsque vous essayez d'appeler le service web à partir d'un client de test, j'obtiens ce message d'erreur:

La requête HTTP est autorisée avec
le schéma d'authentification client
"Anonyme". L'en-tête d'authentification
reçu par le serveur était "NTLM".

La ligne de code qui appelle le service web ressemble à ceci:

string message = new ServiceReference1.Service1SoapClient().HelloWorld();

Et le code du service web:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{
    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }
}

Quelques points importants:

  • Si j'essaye de mettre au client de s'authentifier à l'aide de l'authentification NTLM, il fonctionne très bien.
  • Si j'essaye de mettre le client n'a pas à s'authentifier, il échoue avec le message ci-dessus.
  • Si j'essaie d'accéder au service web à l'aide d'un navigateur web, j'ai aussi INTERDIT message d'erreur à la place de l'documentation du service web page.
  • Si j'exécute le service web à partir de Visual Studio et de configurer le client pour accéder à ce service (localhost...), il fonctionne très bien.
  • Voir ci-dessous pour plus de détails

J'ai aussi essayé et mis l'autorisation de la balise à l'intérieur d'un emplacement de la balise pointant vers le service web:

<location path="Service1.asmx">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

C'est la façon dont le client de configuration (app.config) ressemble (veuillez noter que, comme mentionné ci-dessus, je ne peux même pas accéder au service à l'aide d'un navigateur web, donc je ne considère que la configuration du client pertinentes):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="Service1Soap" closeTimeout="00:01:00" openTimeout="00:01:00"
                    receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                    bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://name.of.the.server.example.org/Service1.asmx"
                binding="basicHttpBinding" bindingConfiguration="Service1Soap"
                contract="ServiceReference1.Service1Soap" name="Service1Soap" />
        </client>
    </system.serviceModel>
</configuration>

Des Idées?


Mise à jour: j'ai trouvé le fichier suivant:

C:\WINNT\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles\web.config

N'a aucune pertinence pour une application web personnalisée, et si oui, ne pas les paramètres de mon propre site web.config remplacer les paramètres de ce fichier?

Contenu de ce fichier:

<configuration>
    <system.web>
        <membership>
            <providers>
                <add name="WebAdminMembershipProvider" type="System.Web.Administration.WebAdminMembershipProvider" />
            </providers>
        </membership>
        <httpModules>
            <add name="WebAdminModule" type="System.Web.Administration.WebAdminModule"/>
        </httpModules>
        <authentication mode="Windows"/>
        <authorization>
            <deny users="?"/>
        </authorization>
        <identity impersonate="true"/>
       <trust level="Full"/>
       <pages validateRequest="true"/>
       <globalization uiCulture="auto:en-US" />
    </system.web>
</configuration>

Si il y a un autre fichier:

C:\WINNT\Microsoft.NET\Framework\v2.0.50727\config\web.config

Et je pense plutôt que c'est le système à l'échelle du web.fichier de configuration. Ce fichier, en fait, permet accès à tous les utilisateurs:

<system.web>
    <authorization>
        <allow users="*"/>
    </authorization>
  • Un couple de choses... Pourriez-vous poster le web.section de configuration du client de test qui concerne le côté client de la configuration du service? Aussi, avez-vous essayé de faire la méthode statique sur le côté service? Je sais que dans certains autres contextes (comme les pages aspx), WebMethods doivent être statique, mais je ne me souviens pas de asmx.
  • Merci pour votre commentaire. J'ai ajouté un peu plus de détails à mes questions. J'ai également essayé d'accéder via un navigateur web, de sorte que l'application.config peut-être pas trop concerné. J'ai encore ajouté des fins de référence. On ne sait jamais...
  • L'utilisateur que vous utilisez pour l'accès anonyme de lecture des droits sur votre dossier?
InformationsquelleAutor chiccodoro | 2011-01-24