私は楽しみのために作成したシンプルな安らかな wcf サービスを持っています。post メソッドを呼び出してみましたが、失敗しています。これが要約です。
これは私のサービス コントラクト インターフェイスです。
namespace WcfServiceWithNortwind.Smooth {
[ ServiceContract]
public interface INorthwindService {
[ WebGet (UriTemplate = "/" )]
[ OperationContract ]
List <Category2 > GetCategories();
[ WebGet (UriTemplate = "categories/{id}" )]
[ OperationContract ]
Category2 GetCategory(string id);
[ WebInvoke (UriTemplate = "categories/{id}" , Method = "DELETE")]
[ OperationContract ]
void DeleteCategory(string id);
[ WebInvoke (UriTemplate = "categories" , Method = "POST")]
void AddCategory(Category2 category);
}
}
これは、Category2 クラスである私のサービスのデータ メンバーです。
namespace WcfServiceWithNortwind.Smooth {
[ DataContract]
public class Category2 {
[ DataMember ]
public int CategoryID { get; set ; }
[ DataMember ]
public string CategoryName { get; set ; }
[ DataMember ]
public string Description { get; set ; }
}
}
これは、post メソッドを呼び出そうとしているコードです。
System.Xml. XmlDocument doc = new System.Xml. XmlDocument();
doc.Load(context.Server.MapPath( "~/@xml/category.xml" ));
string strHostAddress = "http://localhost:54860/Smooth/Nortwind.svc/categories" ;
string xmldata = doc.OuterXml;
string _data = String .Format( "{0}{1}", "category=" , xmldata);
WebRequest _WebRequest = WebRequest .Create(strHostAddress);
_WebRequest.Method = "POST" ;
byte [] byteArray = Encoding .UTF8.GetBytes(_data);
_WebRequest.ContentType = "application/x-www-form-urlencoded" ;
_WebRequest.ContentLength = byteArray.Length;
Stream dataStream = _WebRequest.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
var _response = _WebRequest.GetResponse();
これは、送信に使用しているxmlファイルです。これはcategory.xmlです。
<? xml version =" 1.0 "?>
<Category2>
<CategoryID />
<CategoryName> Tugberk's Category </CategoryName>
<Description> .net, wcf, wpf, mvc, silverlight </Description>
</Category2>
コードを実行すると、_WebRequest.GetResponse() 呼び出しを試みるとすぐに次のエラーが発生します。
着信メッセージのメッセージ形式が「未加工」です。この操作で予期されるメッセージ形式は「Xml」です。「ジョン」。これは、バインディングで WebContentTypeMapper が構成されていないことが原因である可能性があります。詳細については、WebContentTypeMapper のドキュメントを参照してください。
また、リクエストビルダー機能を備えたフィドラーで投稿しようとしましたが、同じエラーが発生しました。
それで、私はここで何が欠けていますか?