2015-10-14 4 views
-1

Я разработал один wcf service.it работает нормально в моем локальном при потреблении service.but, что случилось, этот сервис опубликован на сервере. Затем всякий раз, когда потребляемая эта услуга получает 400 bad request.please, помогите мне.400 badrequest при потреблении wcf-сервиса?

ниже мой код:

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 файла:

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

На самом деле, что случилось эта услуга работает нормально в my .net project. Я добавляю эту службу, используя ссылку на сервисную службу и получая данные нормально. Но всякий раз, когда я нахожусь httpWebRequest, тогда пришло 400 badrequest. Что я должен делать. Я не знаю, что произошло.

Обновлено:

Я получаю ответ в моем Windows Phone приложение. но люди андроидов получают ошибку. Они получают html response.i.e., мою страницу отладки wcf отладки.

+0

<адрес конечной точки = "" .. не определен –

+0

@KishoreSahas как определить адрес конечной точки и где –

+0

@KishoreSahas конечные точки средства адрес "http: //sdnmfdjffjdfidfj/SampleService1.svc" url? –

ответ

1

Пожалуйста, измените Service Model Configuration как этот

Удалить <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

Я создаю службу wcf service.this, потребляемую людям andriod people.but, они получают ошибку. Они получают html-страницу. –

+0

Plz проект новый, и я проверю его и PLZ удалить комментарии здесь. – Webruster

+0

Я не меняю никакого кода. Я получаю ответ в моем телефоне Windows app.but android люди получают ошибку. Они получают html response.that html design - это моя страница веб-службы wcf webservice. –

 Смежные вопросы

  • Нет связанных вопросов^_^