2010-11-18 34 views
1

UPDATE:的Response.Write JSONP使用jQuery和WCF

該服務無法啓動,因爲它不支持ASP.NET兼容性。此應用程序啓用了ASP.NET兼容性。關閉web.config中的ASP.NET兼容模式,或將AspNetCompatibilityRequirements屬性添加到R​​equirementsMode設置爲「允許」或「必需」的服務類型。

當我嘗試訪問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 
+0

您確定已經聲明式地添加了它。這個錯誤很明顯。它看起來好像您嘗試訪問您的服務時未啓用該服務的ASP.Net兼容模式。 – Josh 2010-11-18 19:13:35

+0

我做了,我仔細檢查... – 2010-11-18 19:15:43

+0

好的,所以...幾個問題。 1.)您的WCF服務是否託管在IIS中? 2.)您是否在您的服務實施或合同上籤了聲明? – Josh 2010-11-18 19:27:06

回答

0

HttpContext是一個ASP.Net構建體。如果你想在你的服務中訪問它,那麼你需要啓用ASP.Net Compatibility爲您的服務。

無論是通過在web.config:

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

或者聲明:

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

我嘗試添加通過web.config和delcaratively,但我得到這個錯誤:我更新我的問題。 – 2010-11-18 19:09:43

+0

你必須在web.config和服務中做到這一點。如果他們不匹配它的錯誤。 – BradLaney 2011-11-04 17:33:23

0

如果簡單地回答寫是你的東西,那麼可以考慮使用一個簡單的HttpHandler(通過實現IHttpHandler接口)。 Response對象並不意味着在WCF服務中使用...如果WCF對你而言(或許它提供的技術堆棧是你需要的),那麼考慮使用已經存在的plumming來輸出json:

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

} 
+0

符文:我正在跨域這就是爲什麼我試圖簡單地流數據... – 2010-11-18 21:52:08

+0

簡單的HttpHandler和WCF方法都涵蓋了跨域場景。 實際上唯一沒有(沒有調整)的是RIA服務和MVC JsonResult。 – 2010-11-19 08:10:44