WCF 400 Плохой запрос - PullRequest
       19

WCF 400 Плохой запрос

4 голосов
/ 21 сентября 2011

Я создал простую функцию

       [OperationContract]
       [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)]
       string Start();

Определение

       public String Start()
       {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            return serializer.Serialize("Check");
       }

Из браузера, использующего Javascript / Jquery, http://localhost/service1.svc говорит мне, что я создал сервис и другую информацию. Выглядит хорошо.
Я пытаюсь вызвать это с помощью http://localhost/service1.svc/Start

Я получил 400 плохих запросов на этот звонок. Я надеюсь, что я не делаю что-то здесь не так. Я должен иметь возможность получить доступ к службе WCF из браузера правильно? Я старался много искать, прежде чем подумать о публикации. Но я не могу заставить работать эту основную вещь, которая расстраивает меня.

РЕДАКТИРОВАТЬ И ОБНОВИТЬ Сейчас я на этой стадии. Страница службы сообщает, что служба метаданных отключена, и просит вставить следующий текст

   <serviceMetadata httpGetEnabled="true" />

Я вставил текст - но все равно он показывает тот же текст !! Это становится слишком запутанным сейчас ..

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

У меня работает.Я создал WCF Rest Service.

Я использую URL, который выглядит как http://localhost:8080/Service1/Start

Вот код:

using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Web.Script.Serialization;

namespace WcfRestService1
{
    // Start the service and browse to http://<machine_name>:<port>/Service1/help to view the service's generated help page
    // NOTE: By default, a new instance of the service is created for each call; change the InstanceContextMode to Single if you want
    // a single instance of the service to process all calls.   
    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
    // NOTE: If the service is renamed, remember to update the global.asax.cs file
    public class Service1
    {
        [OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)]
        public string Start()
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            return serializer.Serialize("Check");
        }
    }
}
1 голос
/ 21 сентября 2011

Попробуйте изменить POST с помощью GET и перезапустите запрос

...