1

WCF サービスに接続するコード スニペットを次に示します。

DefaultHttpClient client = new DefaultHttpClient();         
                            HttpGet request = new HttpGet(EMPLOYEE_LOG_IN);
                            request.setHeader("Accept", "application/json");
                            request.setHeader("Content-type", "application/json");          
                            HttpResponse response = client.execute(request);
                            HttpEntity entity = response.getEntity();
                            if(entity.getContentLength() != 0) {
                                Reader employeeReader = new InputStreamReader(response.getEntity().getContent());       
                                                //create a buffer to fill if from reader            
                                                char[] buffer = new char[(int) response.getEntity().getContentLength()];        
                                                //fill the buffer by the help of reader         
                                                employeeReader.read(buffer);                
                                                //close the reader streams              
                                                employeeReader.close(); 
                                                //for the employee json object              
                                                JSONObject employee =  new JSONObject(new String(buffer));
                                                Log.d("Response",employee.getString("FirstName"));    

さまざまな状況でさまざまな方法で動作します。これが私のWCFサービスのコードです

 public Controller GetEmployees(int personalNUmber)
        {                

                return new Controller
                            {
                                EmployeeId = 1,
                                FirstName = "FirstName",
                                LastName = "LastName"
                            };    
            }
        }

SO このメソッドを呼び出すと、すべて正常に動作し、json 形式がうまく取得されますが、メソッドを編集して Entity DB に接続すると、このようになります

FineReceiptsTestEntities _entity = new FineReceiptsTestEntities();

        var t = _entity.Employees.FirstOrDefault(x => x.EmployeeID == personalNUmber);
        return new Controller
                   {

                       EmployeeId = 1,
                       FirstName = t != null ? t.Name : " ",
                       LastName = "LastName"
                   }; 

Json オブジェクトが返されませんでした。このようなエラーのあるhtmlコンテンツのみを返しました

サーバーでリクエストの処理中にエラーが発生しました。サービスへの有効なリクエストの作成については、サービスのヘルプ ページを参照してください。

ただし、ブラウザの両方のタイプのメソッドは正常に機能し、関連するデータを返します。

ここに私のweb.configがあります

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
  </system.web>
  <system.serviceModel>
    <standardEndpoints>
      <webHttpEndpoint>
        <standardEndpoint helpEnabled="true" automaticFormatSelectionEnabled="true" />
      </webHttpEndpoint>
    </standardEndpoints>
    <services>
      <service name="dev_FineReceiptsService.ControllersInfo">
        <endpoint kind="webHttpEndpoint" contract="dev_FineReceiptsService.IControllersInfo" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
  </system.serviceModel>
  <connectionStrings>
    <add name="FineReceiptsTestEntities" connectionString="metadata=res://*/FineTest.csdl|res://*/FineTest.ssdl|res://*/FineTest.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=msdev01;Initial Catalog=FineReceiptsTest;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

エンティティを使用してデータを取得するときの問題は何ですか?

4

1 に答える 1

0

原因を特定するための十分な情報が投稿にありません。誰かがあなたを助けるためにRAWHTTP応答を投稿する必要があります。リクエストを正しく作成していないため、サーバーはおそらくHTTP415を返しています。

request.setHeader("Content-type", "application/json");          

GETリクエストのコンテンツタイプをjsonに設定しています。それは不可能です。サーバーはそれに一致しようとして混乱する可能性があります。サーバーにリクエストからの本物のHTTP500エラーがある可能性もあります。応答エラーの作成方法から、サービスは要求自体が無効であると不平を言っているようです。

server encountered an error processing the request.Please see the service help page for constructing valid requests to the service.
于 2012-10-14T18:18:36.850 に答える