C# wcf服务返回错误404 POST请求
我有客户端(Windows Phone)和REST服务。问题是:我正在发送一个POST请求,其中一个变量JSON字符串服务处理它,答案是:C# wcf服务返回错误404 POST请求,c#,wcf,post,C#,Wcf,Post,我有客户端(Windows Phone)和REST服务。问题是:我正在发送一个POST请求,其中一个变量JSON字符串服务处理它,答案是: "{StatusCode: 404, ReasonPhrase: '', Version: 0.0, Content: System.Net.Http.StreamContent, Headers:{ Content-Length: 0}}" 我花了很长时间想弄明白。没有所有人的帮助。因此,所有阶段: 1) 我发布的变量是:
"{StatusCode: 404, ReasonPhrase: '', Version: 0.0, Content: System.Net.Http.StreamContent, Headers:{ Content-Length: 0}}"
我花了很长时间想弄明白。没有所有人的帮助。因此,所有阶段:
1) 我发布的变量是:
"{"Category_id":1002,"Country_id":null,"City_id":null,"Areas_id":null,"Gender_user":null,"DateAnnouncing":null,"MinDateBirthday":null,"MaxDateBirthday":null,"Popular":null,"DateSort":null}"
2) 调用方法
public static async Task<string> ServiceCalledWithJson( string MethodName, AnnFilter customObject)
{
string ServiceURI = GetServiceHost() + MethodName;
var httpClient = new HttpClient();
var result = JsonConvert.SerializeObject(new { filter = customObject });
var request = new StringContent(result, Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync(ServiceURI, request);
string content = await response.Content.ReadAsStringAsync();
return content;
}
6) Web配置:
<endpointBehaviors>
<behavior name="restBehavior">
<webHttp helpEnabled="true" defaultOutgoingResponseFormat="Json"/>
</behavior>
</endpointBehaviors>
<service behaviorConfiguration="MyBehavior" name="Searching.BE.Service.WCFRESTService">
<endpoint address="" behaviorConfiguration="restBehavior" binding="webHttpBinding"
contract="Searching.BE.Service.IWCFRESTService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint address="net" binding="netHttpBinding" contract="Searching.BE.Service.IWCFRESTService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<webHttpBinding>
<binding name="webhttp"
bypassProxyOnLocal="true"
useDefaultWebProxy="false"
hostNameComparisonMode="WeakWildcard"
sendTimeout="10:15:00"
openTimeout="10:15:00"
receiveTimeout="10:15:00"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647"
transferMode="StreamedRequest">
<readerQuotas maxArrayLength="2147483647"
maxStringContentLength="2147483647" />
<security mode="None">
<transport clientCredentialType="None">
</transport>
</security>
</binding>
</webHttpBinding>
这有帮助吗-?您是否已使用Fiddler或Chrome调试工具检查以验证所调用的实际URL?我想知道GetServiceHost是否返回所需的结束斜杠,然后将MethodName附加到它…@Nikki9696我制作了TestFunction,它发送关于WCF服务的JSON请求并返回。我可以说问题不在URL中
public List<Announcing> GetAnnouncingFilter(AnnFilter filter)
{
var json = JsonConvert.SerializeObject(filter);
Logger.WriteToFile_Json(json);
List < Announcing > listAnnonc = new List<Announcing>();
Announcing annonc = new Announcing();
DataTable table = new DataTable();
table = AnnouncingFilter.GetAnnouncingFilter(filter);
foreach(DataRow row in table.Rows)
{
try
{
annonc.Announcing_id = int.Parse(row["Announcing_id"].ToString());
annonc.Name_Announcing = row["Name_Announcing"].ToString();
annonc.Name_City = row["City_Name"].ToString();
listAnnonc.Add(new Announcing() {Announcing_id=annonc.Announcing_id,Name_Announcing=annonc.Name_Announcing,Name_City =annonc.Name_City });
}
catch (Exception ex)
{
Logger.CreateLog(ex);
throw ex;
}
}
var slem = "";
slem = JsonConvert.SerializeObject(listAnnonc);
Logger.WriteToFile_Json(slem);
return listAnnonc;
{"Category_id":1002,"Country_id":null,"City_id":null,"Areas_id":null,"Gender_user":null,"DateAnnouncing":null,"MinDateBirthday":null,"MaxDateBirthday":null,"Popular":null,"DateSort":null
[{"Name_City":"Киев","Announcing_id":1,"Name_Announcing":"Прогулки","Phone_Announcing":null,"Date_Announcing":"0001-01-01T00:00:00","Info_Announcing":null,"Categories_id":0,"User_id":0,"City_id":0,"Areas_id":null,"AreasOfCity":null,"Categories":null,"Cities":null,"UserList":null,"Favorite_Announcing":[],"Selected_Announcing":[]}]
<endpointBehaviors>
<behavior name="restBehavior">
<webHttp helpEnabled="true" defaultOutgoingResponseFormat="Json"/>
</behavior>
</endpointBehaviors>
<service behaviorConfiguration="MyBehavior" name="Searching.BE.Service.WCFRESTService">
<endpoint address="" behaviorConfiguration="restBehavior" binding="webHttpBinding"
contract="Searching.BE.Service.IWCFRESTService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint address="net" binding="netHttpBinding" contract="Searching.BE.Service.IWCFRESTService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<webHttpBinding>
<binding name="webhttp"
bypassProxyOnLocal="true"
useDefaultWebProxy="false"
hostNameComparisonMode="WeakWildcard"
sendTimeout="10:15:00"
openTimeout="10:15:00"
receiveTimeout="10:15:00"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647"
transferMode="StreamedRequest">
<readerQuotas maxArrayLength="2147483647"
maxStringContentLength="2147483647" />
<security mode="None">
<transport clientCredentialType="None">
</transport>
</security>
</binding>
</webHttpBinding>