C# 手动发布到Asp.NETMVC控制器
我有一个类似这样的控制器,用于将xml导入我的站点:C# 手动发布到Asp.NETMVC控制器,c#,asp.net,http,controller,C#,Asp.net,Http,Controller,我有一个类似这样的控制器,用于将xml导入我的站点: [HttpPost] public ActionResult Import(string xml) { 我有一个独立的应用程序,它读取xml文件并将其发送到url。看起来是这样的: static void Main(string[] args) { var reader = new StreamReader(@"myfile.xml"); var request = W
[HttpPost]
public ActionResult Import(string xml)
{
我有一个独立的应用程序,它读取xml文件并将其发送到url。看起来是这样的:
static void Main(string[] args)
{
var reader = new StreamReader(@"myfile.xml");
var request = WebRequest.Create("http://localhost:41379/mycontroller/import");
request.Method = "POST";
request.ContentType = "text/xml";
StreamWriter sw = new StreamWriter(request.GetRequestStream());
sw.Write(reader.ReadToEnd());
sw.Close();
var theResponse = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(theResponse.GetResponseStream());
var response = sr.ReadToEnd();
}
控制器被正确地调用,但当我打断时,参数为null。我很确定我只是没有设置正确的内容类型或类似的东西。什么是对xml进行编码的正确方法,以便框架能够正确地获取xml并将其提供给控制器?省去您的很多烦恼和使用
我把你引向了错误的方向,写了一个控制器和客户端,它似乎工作得很好:
控制器
public class HomeController : Controller
{
public ActionResult Upload()
{
XDocument doc;
using (var sr = new StreamReader(Request.InputStream))
{
doc = XDocument.Load(sr);
}
return Content(doc.ToString());
}
}
客户端
static void Main(string[] args)
{
var req = (HttpWebRequest)WebRequest.Create("http://host/Home/Upload");
req.Method = "POST";
req.ContentType = "text/xml";
using (var stream = File.OpenRead("myfile.xml"))
using (var requestStream = req.GetRequestStream()) {
stream.CopyTo(requestStream);
}
using (var response = (HttpWebResponse) req.GetResponse())
using (var responseStream = response.GetResponseStream())
using (var sr = new StreamReader(responseStream))
{
XDocument doc = XDocument.Load(sr);
Console.WriteLine(doc);
}
Console.ReadKey();
}
您在哪里将xml内容传递给操作?我正在将其写入请求流。但您没有给它命名。它需要是一个正式的名为HTTP POST param的文件。您还缺少很多用于流和数据的using语句requests@crice,是的,但这是整个计划,所以他们无论如何都会被处置@柯克,这正是我要问的,说得好。我只能读取输入流。我根本不需要框架来解析它。我很快就会试试这个。