C# 手动发布到Asp.NETMVC控制器

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

我有一个类似这样的控制器,用于将xml导入我的站点:

    [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,是的,但这是整个计划,所以他们无论如何都会被处置@柯克,这正是我要问的,说得好。我只能读取输入流。我根本不需要框架来解析它。我很快就会试试这个。