私はデバッグしていた作業コードを持っていましたが、メソッド内でいくつかのリファクタリングを行った後、私のユニットテストは404に戻り、理由を理解することができます。Webサービスが404コードを投げる
POSTメソッドからのコード
public class HomeController : ApiController
{
[HttpPost]
public string ReturnXmlDocument(HttpRequestMessage request)
{
try
{
XDocument doc = XDocument.Load(request.Content.ReadAsStreamAsync().Result);
Stream s = new MemoryStream();
doc.Save(s);
s.Seek(0, SeekOrigin.Begin);
XmlSerializer mySerializer = new XmlSerializer(typeof(PictureModelList));
using (XmlReader newReader = XmlReader.Create(s))
{
PictureModelList obj = (PictureModelList)mySerializer.Deserialize(newReader);
string path = @"C:\testfolderforservice\";
foreach (var item in obj.PictureList)
{
File.WriteAllBytes(string.Format("{0}{1}", path, item.FileName), item.Data);
}
}
}
catch (Exception ex)
{
;
}
return "Success";
}
}
ユニットテストからのコード
[TestMethod]
public void TestMethod1()
{
List<PictureModel> lPM = new List<PictureModel>();
var files = Directory.GetFiles(@"C:\source", "*.jpg");
foreach (var file in files)
{
PictureModel pm = new PictureModel();
pm.FileName = Path.GetFileName(file);
pm.Data = File.ReadAllBytes(file);
lPM.Add(pm);
}
PictureModelList pmL = new PictureModelList();
pmL.PictureList = lPM;
XmlSerializer serializer = new XmlSerializer(pmL.GetType());
StringWriter sq = new StringWriter();
serializer.Serialize(sq, pmL);
sq.Close();
string xmlData = sq.ToString();
var content = new StringContent(xmlData, Encoding.Unicode, "text/xml");
var client = new HttpClient();
var result = client.PostAsync("http://localhost/api/Home/ReturnXmlDocument", content).Result;
}
、唯一のPOSTメソッドの内部でいくつかのリファクタリングを行なったし、PostAsync方法がで戻ってきたユニットテストを実行する前に私が言ったように404コード。
私はプロセスに接続することでPOSTメソッドをデバッグできましたが、多分私はすべて間違っています。