2015-10-14 1 views
-1

Je suis développé un wcf service.it fonctionne bien dans mon local lors de la consommation du service.mais ce qui se passe est ce service publié dans server.then chaque fois que consommé ce service obtenir 400 mauvaise demande.please m'aider.400 badrequest lors de la consommation du service wcf?

ci-dessous est mon code:

namespace SampleWcfproject 
{ 
    [ServiceContract] 
    public interface ISampleService1 
    { 
     [OperationContract] 
     //[WebInvoke(Method="GET",ResponseFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.Wrapped,UriTemplate="getdata")] 
     [WebInvoke(UriTemplate = "/getdata/{uuid}", Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
     string getdata(string uuid); 

     [OperationContract] 
     string getcities(); 
    } 
} 

sampleservice.svc.cs:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
public class SampleService1 : ISampleService1 
{ 
     public string getdata(string uuid) 
     { 
      try 
      { 


       SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con2"].ConnectionString); 
       SqlCommand comm = new SqlCommand("select CircleID, CircleName from Circle", con); 
       con.Open(); 
       comm.ExecuteNonQuery(); 

       SqlDataAdapter da = new SqlDataAdapter(comm); 
       // DataSet ds = new DataSet(); 
       DataTable dt = new DataTable(); 
       da.Fill(dt); 

       JavaScriptSerializer JSSerializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
       List<Dictionary<string, object>> DtRows = new List<Dictionary<string, object>>(); 
       Dictionary<string, object> newrow = null; 

       //Code to loop each row in the datatable and add it to the dictionary object 
       foreach (DataRow drow in dt.Rows) 
       { 
        newrow = new Dictionary<string, object>(); 
        foreach (DataColumn col in dt.Columns) 
        { 
         newrow.Add(col.ColumnName.Trim(), drow[col]); 
        } 
        DtRows.Add(newrow); 
       } 
       con.Close(); 


       return JSSerializer.Serialize(DtRows); 
      } 
      catch (Exception ex) 
      { 

       List<String> Parameters = new List<String>(); 
       Parameters.Add("getRechargeCircleList"); 

      // SendErrorMail(ex.ToString(), "getRechargeCircleList", Parameters); 
       // Context.Response.ContentType = "application/json; charset=utf-8"; 
       // Context.Response.Write(@" {""Status"":""false"",""Message"" : ""Oops! Something went Wrong""}"); 
       // return; 
      } 
      return "false"; 
     } 
    } 
} 

fichier web.config:

<system.web> 

    <httpRuntime maxRequestLength="32768"/> 
    <compilation debug="true" targetFramework="4.0"/> 
    <customErrors mode="Off"/> 
    <!-- 
     The <authentication> section enables configuration 
     of the security authentication mode used by 
     ASP.NET to identify an incoming user. 
    --> 
    <authentication mode="Windows"/> 
    <!-- 
     The <customErrors> section enables configuration 
     of what to do if/when an unhandled error occurs 
     during the execution of a request. Specifically, 
     it enables developers to configure html error pages 
     to be displayed in place of a error stack trace. 

     <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> 
     <error statusCode="403" redirect="NoAccess.htm" /> 
     <error statusCode="404" redirect="FileNotFound.htm" /> 
     </customErrors> 
    --> 
    <pages controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID"/> 
    </system.web> 
    <!-- 
     The system.webServer section is required for running ASP.NET AJAX under Internet 
     Information Services 7.0. It is not necessary for previous version of IIS. 
    --> 
    <system.webServer> 
    <!-- 
     To browse web app root directory during debugging, set the value below to true. 
     Set to false before deployment to avoid disclosing web app folder information. 
     --> 
    <directoryBrowse enabled="true"/> 
    </system.webServer> 
    <system.serviceModel> 

    <bindings> 
    <basicHttpBinding> 
     <binding name="basicHttp" allowCookies="true" 
       maxReceivedMessageSize="4194304" 
       maxBufferSize="20000000" 
       maxBufferPoolSize="20000000"> 
      <readerQuotas maxDepth="32" 
       maxArrayLength="200000000" 
       maxStringContentLength="200000000"/> 
     </binding> 
    </basicHttpBinding> 
</bindings> 
    <services> 
     <service behaviorConfiguration="SampleWcfproject.Service1Behavior" name="SampleWcfproject.Service1"> 
     <endpoint address="" binding="basicHttpBinding" contract="SampleWcfproject.IService1"> 

      <identity> 
      <dns value="localhost"/> 
      </identity> 
     </endpoint> 

     <endpoint address="" binding="netTcpBinding" contract="SampleWcfproject.IService1"/> 

      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
     </service> 
     <service behaviorConfiguration="SampleWcfproject.SampleService1Behavior" name="SampleWcfproject.SampleService1"> 
     <endpoint address="basic" binding="basicHttpBinding" contract="SampleWcfproject.ISampleService1"> 
      <identity> 
      <dns value="localhost"/> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
     </service> 
    </services> 
    <behaviors> 
     <endpointBehaviors> 
      <behavior name="web"> 
       <dataContractSerializer maxItemsInObjectGraph="2147483647"/> 
      </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
     <behavior name="SampleWcfproject.Service1Behavior"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     <behavior name="SampleWcfproject.SampleService1Behavior"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

En fait, ce happend est ce service fonctionne bien dans mon projet .net. J'ajoute ce service en utilisant la référence de service d'addition et obtenant des données normalement. mais chaque fois que je suis nous ING HttpWebRequest puis 400 badrequest est venu. Que dois-je faire.Je ne sais pas ce qui s'est passé.

Mise à jour:

Je reçois la réponse dans mon windows phone app. mais les gens android se trompent. Ils obtiennent html response.i.e., ma page de navigateur de débogage de wcf.

+0

+0

@KishoreSahas Comment définir l'adresse du point final et où –

+0

@KishoreSahas moyens d'adresse de point final "http: //sdnmfdjffjdfidfj/SampleService1.svc" url? –

Répondre

1

S'il vous plaît modifier le Service Model Configuration comme celui-ci

Retirer <endpoint address="" binding="netTcpBinding" contract="SampleWcfproject.IService1"/>

<service behaviorConfiguration="SampleWcfproject.Service1Behavior" name="SampleWcfproject.Service1"> 

    <endpoint address="" binding="basicHttpBinding" contract="SampleWcfproject.IService1"> 

    <identity> 
<dns value="localhost"/> 
    </identity> 
    </endpoint> 

    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
    </service> 
+0

Je crée wcf service.this consommé pour andriod personnes.but ils obtiennent erreur.ils obtiennent la page html. –

+0

Plz rédige un nouveau et je vais le vérifier et plz supprimer les commentaires ici. – Webruster

+0

Je ne change pas de code. J'obtiens la réponse dans mon application de téléphone de Windows. Mais les gens d'android obtenant l'erreur. Ils obtiennent la réponse html. Que la conception html est ma page de débogage de wcf webservice. –