2012-02-27 23 views
0

にパラメータを渡すとき、私は私の最初のWCFサービスとぐちゃぐちゃだし、私はパラメータを渡して問題を抱えています。内部サーバーエラーWCFサービス

私のjQueryのAjaxの呼び出しは次のようになります...

$.ajax({ 
    type : 'POST', 
    async : true, 
    url  : 'Service2.svc/GetStats', 
    contentType: 'application/json; charset=utf-8', 
    data : '{ i : 12 }', 
    dataType: 'json', 
    success : function(result) { 
     //success routine... 
    } 
}); 

は私のサービスコードを追加するようなものです...

<OperationContract()> _ 
<WebInvoke(ResponseFormat:=WebMessageFormat.Json, RequestFormat:=WebMessageFormat.Json)> _ 
Public Function GetStats(ByVal i As Integer) As Results 
    Dim returnValue As New Results 
    returnValue.iValue1 = 10 
    returnValue.iValue2 = 20 
    returnValue.sMessage = "You executed " + "sdfsd" 
    Return returnValue 
End Function 

Resultsクラスは本当に簡単ホルダークラス、二つの整数であり、aであります文字列。

GetStatsからパラメータを削除し、対応するdataプロパティをmy $ .ajaxオブジェクトから削除すると、このサービスはうまく動作します。クライアントで3つの戻り値にアクセスできます。 500:パラメータiは私がInternal Server Error状態を取得含まれている

私は私のサービス機能から属性または何かが欠けてる推測していますか?

答えて

1

おかげオブジェクトでなければなりませんしながら、あなたは、文字列としてデータを送信している

var data = { i : 12 }; 

$.ajax({ 
    type : 'POST', 
    async : true, 
    url  : 'Service2.svc/GetStats', 
    contentType: 'application/json; charset=utf-8', 
    data : data, 
    dataType: 'json', 
    success : function(result) { 
     //success routine... 
    } 
}); 

を行う必要があります。

私はこの1つと格闘しばらく過ごし、私が行うために必要なすべてのだった...

 data : '{"i" : 12}' , //Object name i in double-quotes 

私はを文字列としてJSONを渡したいん他の提案の一部にそう反します。私は、実際のエラーが何であったか発見した後にこれを発見することができしかし

(私は1つは本当に、そのようなこのためCrockford's JSONとしてライブラリを使用する必要がありますと仮定します)。私はロックダウンされたマシン上で見つけることができませんでした - 私はmkdot.netからこれを持って、それは本当にSvcConfigEditor.exeを使用して生成されなければならない

<system.diagnostics> 
    <sources> 
    <source name="System.ServiceModel" switchValue="Warning, ActivityTracing" 
     propagateActivity="true"> 
     <listeners> 
     <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
      <filter type="" /> 
     </add> 
     <add name="ServiceModelTraceListener"> 
      <filter type="" /> 
     </add> 
     </listeners> 
    </source> 
    </sources> 
    <sharedListeners> 
    <add initializeData="app_tracelog.svclog" 
     type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, 
     Culture=neutral, PublicKeyToken=b77a5c561934e089" 
     name="ServiceModelTraceListener" traceOutputOptions="Timestamp"> 
     <filter type="" /> 
    </add> 
    </sharedListeners> 
</system.diagnostics> 

に...私のweb.configファイルにこのスニペットをスローすることによってこれをしませんでした。しかし、それを貼り付けるだけで動作するように思えました - そして、私の開発フォルダにログファイルを与えました - これは実際に私にエラーの性質を教えてくれました。

1

文字列としてデータを送信しようとしています。それをオブジェクトとして送信する必要があります。

data : { i : 12 }, 

うーん。これでは動作しません。

これを試してください。

data: 'i=12'; 

このようにサービスを変更してもう一度お試しください。

<OperationContract()> _ 
<WebInvoke(ResponseFormat:=WebMessageFormat.Json, RequestFormat:=WebMessageFormat.Json)> _ 
Public Function GetStats(ByVal i As String) As Results 
    Dim returnValue As New Results 
    returnValue.iValue1 = 10 
    returnValue.iValue2 = 20 
    returnValue.sMessage = "You executed " + "sdfsd" 
    Return returnValue 
End Function 
+0

同じエラーが私はVBに慣れていないんだが、あなたのAJAX呼び出しは何も問題はありません怖い –

+0

@ElRonnocoです。静かにあなたのサービスをparemterと呼んでみましたか?構文エラーまたはstがあるはずです。 – littlealien

+0

@ElRonnoco私は、あなたがjs経由でデータを送信していると思います。整数は文字列に変わります。そしてあなたは整数としてパラメータを取得しようとしています。多分あなたは文字列としてパラメータを取得し、それをメソッドの整数に変換する必要があります。 – littlealien

0

あなたはそれが応答のための

+0

ありがとう、私はすでにこれを試した...同じエラー... –

関連する問題