.net - studio - WCF Service Returning "Método no permitido"
web service c# visual studio 2017 (8)
He tenido este mismo problema durante más de un día, finalmente lo descubrí. Gracias a @Sameh por la pista.
Tu servicio probablemente esté funcionando bien. Probar los mensajes POST utilizando la barra de direcciones de un navegador no funcionará. Necesita usar Fiddler para probar un mensaje POST.
Instrucciones de Fiddler ... http://www.ehow.com/how_8788176_do-post-using-fiddler.html
En el proceso de desarrollo de mi primer servicio WCF y cuando trato de usarlo obtengo "Método no permitido" sin otra explicación.
Tengo mi interfaz configurada con ServiceContract y OperationContract:
[OperationContract]
void FileUpload(UploadedFile file);
Junto con el método real:
public void FileUpload(UploadedFile file) {};
Para acceder al Servicio, ingreso http://localhost/project/myService.svc/FileUpload pero http://localhost/project/myService.svc/FileUpload el error "Método no permitido"
¿Me estoy perdiendo de algo?
Los tipos intrínsecos básicos (por ejemplo, byte
, int
, string
y arrays) serán serializados automáticamente por WCF. Las clases personalizadas, como su UploadedFile, no lo serán.
Entonces, una pregunta tonta (pero tengo que preguntarlo ...): ¿está UploadedFile marcado como [DataContract]
? De lo contrario, deberá asegurarse de que así sea y de que cada uno de los miembros de la clase que desee enviar esté marcado con [DataMember].
A diferencia de la interacción remota, donde marcar una clase con [XmlSerializable] le permitió serializar toda la clase sin molestarse en marcar los miembros que desea serializar, WCF necesita que marque cada miembro. (Creo que esto está cambiando en .NET 3.5 SP1 ...)
Un recurso tremendo para el desarrollo de WCF es lo que conocemos en nuestra tienda como "el libro de los peces": Programación de WCF Services por Juval Lowy. A diferencia de algunos de los otros libros de WCF, que son un tanto áridos y académicos, este tiene un enfoque práctico para la construcción de servicios WCF y es realmente útil. Completamente recomendado.
Mi caso: configuración del servicio en el nuevo servidor. ASP.NET 4.0 no se instaló / registró correctamente; la extensión svc no fue reconocida.
Parece que estás usando una dirección incorrecta:
Para acceder al Servicio, ingreso http://localhost/project/myService.svc/FileUpload
Suponiendo que te refieres a que esta es la dirección que le das a tu código de cliente, entonces sospecho que debería ser:
http://localhost/project/myService.svc
Si está utilizando el [WebInvoke(Method="GET")]
en el método de servicio, asegúrese de deletrear el nombre del método como "GET" y no "Get" u "get", ya que distingue entre mayúsculas y minúsculas. Tuve el mismo error y me llevó una hora descubrirlo.
Solo se puede acceder a los métodos con WebGet desde el navegador IE; puedes acceder a otros verbos de http simplemente escribiendo la dirección
Puede probar el kit de inicio de servicio Restful de codeples o usar el violín para probar sus otros verbos http
Su navegador está enviando una solicitud HTTP GET: asegúrese de tener el atributo WebGet en la operación del contrato:
[ServiceContract]
public interface IUploadService
{
[WebGet()]
[OperationContract]
string TestGetMethod(); // This method takes no arguments, returns a string. Perfect for testing quickly with a browser.
[OperationContract]
void UploadFile(UploadedFile file); // This probably involves an HTTP POST request. Not so easy for a quick browser test.
}
necesitas agregar en web.config
<endpoint address="customBinding" binding="customBinding" bindingConfiguration="basicConfig" contract="WcfRest.IService1"/>
<bindings>
<customBinding>
<binding name="basicConfig">
<binaryMessageEncoding/>
<httpTransport transferMode="Streamed" maxReceivedMessageSize="67108864"/>
</binding>
</customBinding>