405: Méthode Non Autorisée
EDIT: Résumé: Il semble que mon application web peut être consulté par toute personne (uniquement firefox ou chrome) et par moi en utilisant mon ordinateur principal. Si j'essaie d'accéder à http://luiscarlosch.com/WebFormClean.aspx partir de n'importe quel autre de mes LAN il obtient une erreur 405
Je peux tout à fait appel à un web WCF méthode à partir de localhost. J'ai publié sur ce serveur: http://luiscarlosch.com/WebFormClean.aspx (seulement firefox ou chrome)
avec Visual Studio outil de publication et il fonctionne très bien. Le problème est alors d'essayer d'y accéder depuis un autre ordinateur. Je reçois la 405: Méthode Non Autorisée.
Mais Il fais beaucoup de sens, car Il fonctionne très bien lorsque j'ai accès à distance de l'ordinateur de l'éditeur comme je l'ai dit.
Une idée?
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ContactProxy
{
[WebGet()]
[OperationContract]
public Contact getByID(int IDContact)
{
Contact contact = new Contact(IDContact);
return contact;
}
[OperationContract]
public EntityData insertEntityData(int IDEntityDataFieldType, int IDContact, String value)
{
//Contact contact = new Contact();
//contact.insertEntityData(IDEntityDataFieldType, IDContact, value);
EntityData entityData = new EntityData();
entityData.save(IDEntityDataFieldType, IDContact, value);
return entityData;
}
}
Ni la méthode semble fonctionner.
J'ai juste remarqué que certains utilisateurs ont pu accéder à http://luiscarlosch.com/WebFormClean.aspx parce qu'ils changent les valeurs. Donc. certains clients peuvent lire les méthodes mais certains cant. Ce qui devrait arriver.
De Configuration Web De
<?xml version="1.0"?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<customErrors mode="Off"/>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
</providers>
</roleManager>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceTypeBehaviors" >
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="WebApplicationTest.WCFProxy.EmployeeProxyAspNetAjaxBehavior">
<enableWebScript />
</behavior>
<behavior name="WebApplicationTest.WCFProxy.EntityDataFieldCollectionProxyAspNetAjaxBehavior">
<enableWebScript />
</behavior>
<behavior name="WebApplicationTest.WCFProxy.Service1AspNetAjaxBehavior">
<enableWebScript />
</behavior>
<behavior name="WebApplicationTest.WCFProxy.ContactProxyAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service name="WebApplicationTest.WCFProxy.EmployeeProxy" behaviorConfiguration="MyServiceTypeBehaviors" >
<endpoint address="" behaviorConfiguration="WebApplicationTest.WCFProxy.EmployeeProxyAspNetAjaxBehavior"
binding="webHttpBinding" contract="WebApplicationTest.WCFProxy.EmployeeProxy" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
<service name="WebApplicationTest.WCFProxy.EntityDataFieldCollectionProxy" behaviorConfiguration="MyServiceTypeBehaviors" >
<endpoint address="" behaviorConfiguration="WebApplicationTest.WCFProxy.EntityDataFieldCollectionProxyAspNetAjaxBehavior"
binding="webHttpBinding" contract="WebApplicationTest.WCFProxy.EntityDataFieldCollectionProxy" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
<service name="WebApplicationTest.WCFProxy.Service1">
<endpoint address="" behaviorConfiguration="WebApplicationTest.WCFProxy.Service1AspNetAjaxBehavior"
binding="webHttpBinding" contract="WebApplicationTest.WCFProxy.Service1" />
</service>
<service name="WebApplicationTest.WCFProxy.ContactProxy" behaviorConfiguration="MyServiceTypeBehaviors" ><!--new-->
<endpoint address="" behaviorConfiguration="WebApplicationTest.WCFProxy.ContactProxyAspNetAjaxBehavior"
binding="webHttpBinding" contract="WebApplicationTest.WCFProxy.ContactProxy" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
<bindings />
<client />
</system.serviceModel>
</configuration>
- Est-il le REPOS de service? Nous avons besoin de plus d'informations (contrat, config, etc.) ...
- Thankx. Je viens de poster quelques infos.
- Semble IIS est de bloquer la POSTE (ou autre) des demandes.
- a couru dans tout cela plus tôt aujourd'hui, et il s'est avéré être en raison de webdav. publier vos stacktrace ou de ce module est de lancer l'erreur.
Vous devez vous connecter pour publier un commentaire.
Afin de permettre à la croix de domaine de l'appel ajax vous avez besoin
1) d'abord configurer votre serveur web pour permettre origines et les en-Têtes
2) permettre aux méthodes utilisées pour faire la demande
Il semble que vous avez accompli le premier point et peut-être pour la deuxième, vous avez juste besoin de changer:
à:
Quelque chose de bizarre qui se passe dans votre service. D'abord je pense que
insertEntityDate
ne devrait pas être appelée en raison de l'absenceWebGet
ouWebInvoke
attribut. Une autre chose étrange est quegetById
est défini commeWebGet
mais il est appelé en tant que POSTE de JSON demande - je viens de vérifier avec FireBug et Fiddler:Le service fonctionne pour moi, mais il n'est pas le même service décrit par contrat que vous nous avez montré. Btw. il n'y a pas de raison de permettre serviceMetadata comportement et ajouter Mex points de terminaison si vous n'allez pas utiliser le SAVON d'extrémité ainsi.
Lors de l'utilisation de la SCRO la spécification des mandats que les navigateurs "contrôle en amont" de la demande, de solliciter des méthodes prises en charge à partir du serveur avec les OPTIONS du protocole HTTP et le serveur envoie une 405 method not allowed réponse, en indiquant également le permis de méthode.
Le seul but de cette intervention est de vous aider à trouver les options de communication disponibles pour une ressource URL particulière. Permet au client de déterminer les options et/ou des conditions associées à une ressource, ou les capacités d'un serveur, sans action spécifique impliquant le transfert de données.
Espérons que cela aide,