-1

I am developed one wcf service.it is working fine in my local when consuming the service.but what happend is this servce published in server.then whenever consumed this service getting 400 bad request.please help me.

below is my 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";
       }
     }
}

web.config file:

<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>

Actually what happend is this service working fine in my .net project.I am adding this service by using add service reference and getting data normally.but whenever I am using HttpWebRequest then 400 badrequest came.what should I do.I don't know what happend.

Updated :

I am getting response in my windows phone app. but android people getting error.They are getting html response.i.e., my wcf debugging browser page.

Anil Kumar
  • 303
  • 1
  • 6
  • 23

1 Answers1

1

Please modify the Service Model Configuration like this

Remove <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>
Krsna Kishore
  • 8,233
  • 4
  • 32
  • 48
  • I am creating wcf service.this service consumed to andriod people.but they are getting error.they are getting html page. – Anil Kumar Oct 16 '15 at 12:13
  • Plz draft a new one and i will check it and plz remove comments here. – Krsna Kishore Oct 16 '15 at 13:02
  • I am not changing any code. I am getting the response in my windows phone app.but android people getting error.they are getting html response.that html design is my wcf webservice debugging page. – Anil Kumar Oct 16 '15 at 13:10
  • Yes, thats what i'm stating here question tags c# and asp.net ,so need to add windows phone tag in new question , i dont have proper knowledge about mmobiles sorry !! – Krsna Kishore Oct 16 '15 at 13:14
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/92505/discussion-between-webruster-and-anil-kumar). – Krsna Kishore Oct 16 '15 at 13:26