Ответ. Напишите JSONP, используя JQuery и WCF. - PullRequest
1 голос
/ 18 ноября 2010

ОБНОВЛЕНИЕ:

Служба не может быть активирована, поскольку она не поддерживает совместимость с ASP.NET.Совместимость ASP.NET включена для этого приложения.Отключите режим совместимости ASP.NET в web.config или добавьте атрибут AspNetCompatibilityRequirements к типу службы с параметром RequirementsMode как «Разрешено» или «Обязательно».

, когда я пытаюсь получить доступ к службе wcf, я получаю эту ошибку: причина в том, что HttpContext.Current равен нулю, что мне делать в этом случае?любая помощь?

Ссылка на объект не установлена ​​для экземпляра объекта.

 System.Web.Script.Serialization.JavaScriptSerializer s = new            System.Web.Script.Serialization.JavaScriptSerializer();
        Person p = new Person() { FirstName = "First name", LastName= "last name" };
        string json = s.Serialize(p);
        System.Web.HttpContext.Current.Response.Write("jsoncallback" + json);} //error

Ответы [ 2 ]

0 голосов
/ 19 ноября 2010

Если вам нужна простая запись ответа, рассмотрите возможность использования простого HttpHandler (путем реализации интерфейса IHttpHandler). Объект Response не предназначен для использования в службе WCF ...

Если, однако, вам подходит WCF (может, вам нужен стек технологий, который вам нужен), подумайте об использовании уже существующего отвеса для вывода json:

[ServiceContract] 
public interface IService
{
    [OperationContract]
    [WebGet(ResponseFormat = WebMessageFormat.**Json**)]
    String DoStuff();

}
0 голосов
/ 18 ноября 2010

HttpContext - это конструкция ASP.Net.Если вы хотите иметь доступ к нему в своем сервисе, вам необходимо включить ASP.Net Compatibility для вашего сервиса.

Либо через web.config:

<system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />  
</system.serviceModel>

Или декларативно:

[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Required)]  
public class MyService : IMyService { ... }
...