2010-11-18 10 views
1

UPDATE:それはASP.NETとの互換性をサポートしていないためResponse.WriteをJSONP

サービスが起動できません。このアプリケーションでは、ASP.NETとの互換性が有効になっています。 web.configでASP.NET互換モードをオフにするか、AspNetCompatibilityRequirements属性をRequirementsMode設定が 'Allowed'または 'Required'に設定されているサービスタイプに追加します。

私がwcfサービスにアクセスしようとすると、このエラーが発生します。理由はHttpContext.Currentがnullです。この場合、どうすればよいですか?どんな助け?

オブジェクト参照がオブジェクトのインスタンスに設定されていません。

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

+0

私はして、私はそれをダブルチェック... –

+0

オクソク...いくつかの質問。 1.)あなたのWCFサービスはIISでホストされていますか? 2.)宣言をサービスの実装または契約に入れましたか? – Josh

答えて

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を通じて追加を試みますが、私はこのエラーが発生します。 –

+0

あなたはweb.configとサービスでそれを行う必要があります。それらがエラーに一致しない場合。 – BradLaney

0

場合は、IHttpHandlerインターフェイスを実装することで(簡単なのHttpHandlerを使用することを検討してください)。応答オブジェクトは、WCFサービスで使用されるものではありません。

WCFがあなたのためのものであれば(おそらく、それが提供する技術のスタックが必要です)、次にそこにプラムを使用して出力することを検討してくださいjson:

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

} 
+0

ルーン:なぜ私は単純なストリームのデータをしようとしていたクロスドメインthatsに取り組んでいます... –

+0

単純なHttpHandlerとWCFのアプローチの両方は、クロスドメインシナリオをカバーします。 実際には(調整をしない)唯一のものは、RIAサービスとMVC JsonResultです。 –