私のWebサービスに投稿しようとしたときに誰かがhttp 400エラーを表示する理由を誰にも説明できますか?webserviceから400エラー
マイサービス契約::
[ServiceContract]
public interface IfldtWholesaleService {
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "MAC")]
string MAC(string input);
マイコール。
private void postToWebsite()
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(txtUrl.Text);
req.Method = "POST";
req.MediaType = "text/xml";
string input = "dfwa";
req.ContentLength = ASCIIEncoding.UTF8.GetByteCount(input);
StreamWriter writer = new StreamWriter(req.GetRequestStream());
writer.Write(input);
writer.Close();
var rsp = req.GetResponse().GetResponseStream();
txtOut.Text = new StreamReader(rsp).ReadToEnd();
}
私のサーバーの設定ファイル
<system.serviceModel>
<services>
<service name="fldtRESTWebservice.fldtWholesaleService" behaviorConfiguration="httpBehaviour">
<endpoint address="" binding="webHttpBinding" contract="fldtRESTWebservice.IfldtWholesaleService" behaviorConfiguration="httpEndpointBehavour">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/ContactService/"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="httpBehaviour">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="httpEndpointBehavour">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
EDIT ::それはまたのMediaType "text/plainの"
"ASCIIEncoding.UTF8"は使用しないでください。 "Encoding.UTF8"を使用してください。 (ASCIIとUTF8は同じではありませんが、そのコードは使えますが、実際には使用しないでください) –
クライアントとサーバーの両方から適切な設定セクションを共有してください。 –
私はサーバーの設定ファイルを追加しました。プロジェクトのデフォルトappconfig以外のものはありません –