WCF «Метод не разрешен» в интегрированном веб-сервере Visual Studio - PullRequest
3 голосов
/ 10 марта 2011

У меня есть два веб-проекта в Visual Studio 2008 с пакетом обновления 1 (SP1), один из которых содержит службу WCF, а другой - для использования службы WCF.Рассматриваемый сервис предоставляет конечную точку webHttpBinding и принимает JSON в качестве входных данных и возвращает JSON.

Я использовал Jquery ajax для использования сервиса из клиентского веб-приложения следующим образом:

$(document).ready(function () {
    var data = '{"myobject":{"Business":"PIZZA"}}';
    $.ajax({
        type: "POST",
        contentType: "application/json",
        data: data,
        dataType: 'json',
        url: "http://localhost:1212/JobInfo.svc/ReturnThisString",
        error:
            function(XMLHttpRequest, textStatus, errorThrown) {
                alert("Error");
            },
        success: function(data) {
            alert("BoolValue: " + data.GetDataUsingDataContractResult.BoolValue);
            alert("StringValue: " + data.GetDataUsingDataContractResult.StringValue);
        }
    });

});

Я получаю следующую ошибку в запросе Firebug HTML:

http://localhost:1212/JobInfo.svc/ReturnThisString 405 Method Not Allowed

Но если запустить тот же файл в веб-проекте, в котором размещен проект, он работает нормально.

Хост-проектработает на заданном порту localhost: 1212, а клиент на localhost: RANDOM_PORT.Поскольку локальный хост такой же, как я себе представляю, это не проблема кросс-домена?Или часть порта также имеет значение?

Серверный контракт выглядит следующим образом:

[OperationContract]
[WebInvoke(Method="POST",UriTemplate="ReturnThisString", 
        BodyStyle=WebMessageBodyStyle.Wrapped, 
        RequestFormat=WebMessageFormat.Json, 
        ResponseFormat=WebMessageFormat.Json)]
EventListArgs ReturnThisString(EventListArgs myobject);

[Serializable]
[DataContract]
public class EventListArgs {

    [DataMember( IsRequired = false)]
    public string Business;

    [DataMember( IsRequired = false)]
    public string Feeder;

}

И реализованный код:

public EventListArgs ReturnThisString(EventListArgs myobject)
{
    return myobject;
}

Это было добавлено какпростой способ доказать, что я не просто сделал что-то глупое.То, что я люблю называть проверкой здравомыслия.Это простая функция, которая принимает комплексный (типа, отличный от строкового) объект JSON в качестве параметра и возвращает сложный объект JSON.

enter image description here

Как вы можете видеть выше, у меня есть двавеб-проект, использующий встроенный веб-сервер Visual Studio (локальная установка IIS невозможна).Приведенная выше конфигурация не работает, но если вы видите, у меня также есть тестовая страница Darkside на хосте сервера, которая является точной копией с клиента, и это работает без проблем.

1 Ответ

2 голосов
/ 19 марта 2011

Попробуйте использовать IIS Express Он обладает теми же функциями, что и полноценный IIS, и не требует установки.Простая командная строка - все, что вам нужно для запуска.Он должен избавиться от ошибок, связанных с Casini, которые вы получаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...