Вызов службы WCF с поддержкой AJAX из jQuery - MVC 2 - PullRequest
6 голосов
/ 21 декабря 2010

Я много читал, выполняя это, и это кажется довольно простым. Я создал свой сервис, который очень прост (выглядит так

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class WeddingPhotographerService
{    
    // Add more operations here and mark them with [OperationContract]
    [OperationContract]
    public bool AddNewSkill(string name, string description)
    {
        IRepository<Skill> skillRepo = ObjectFactory.GetInstance<IRepository<Skill>>();

        var skill = new Skill { Name = name, Description = description };
        skillRepo.Save(skill);
        return true;
    }
}

Достаточно просто, правильно, тогда я пишу этот код jQuery на мой взгляд

$(document).ready(function () {
    $("#AddSkill").click(function () {
        var data = { name: $("#NewSkill").val(), description: "" };
        data = JSON.stringify(data)
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "WeddingPhotographerService.svc/AddNewSkill",
            data: data,
            dataType: "json",
            success: function () {
                $('#SkillListViewContainer').load('../AccountController/GetSkillControl');
            },
            error: function (msg) {
                $("#AddSkillError").text(msg.d);
            }
        });
    });
});

Мой WeddingPhotographerService.svc находится в корне проекта, web.config добавил это, когда я создал службу

<system.serviceModel>
  <behaviors>
    <endpointBehaviors>
      <behavior name="WeddingPhotographer.WeddingPhotographerServiceAspNetAjaxBehavior">
        <enableWebScript />
      </behavior>
    </endpointBehaviors>
  </behaviors>
  <services>
    <service name="WeddingPhotographer.WeddingPhotographerService">
      <endpoint address="" behaviorConfiguration="WeddingPhotographer.WeddingPhotographerServiceAspNetAjaxBehavior"
        binding="webHttpBinding" contract="WeddingPhotographer.WeddingPhotographerService" />
    </service>
  </services>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
    multipleSiteBindingsEnabled="true" />
</system.serviceModel>

Все кажется достаточно простым и кажется, что оно должно работать, но когда я нажимаю AddSkill на консоли Chrome JavaScript, возвращается ошибка 404, так что она вообще не находит службу (я открыл консоль, потому что ничего все происходило, когда я нажимал кнопку).

Я что-то здесь упускаю?

Кстати, я тоже попробовал это (так как это имя в файле web.config )

url: "WeddingPhotographer.WeddingPhotographerService.svc/AddNewSkill"

И я все еще получаю ошибку Ресурс не найден (404)

1 Ответ

4 голосов
/ 21 декабря 2010

Решил, изменил строку url в вызове jQuery AJAX на

url: "../WeddingPhotographerService.svc/AddNewSkill"

И все хорошо

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