如何从没有View的控制台应用程序调用MVC操作

时间:2016-06-17 07:59:01

标签: c# asp.net-mvc

我正在尝试将字符串值发布到控制器中的方法。我的控制器没有视图。是否可以从控制台应用程序调用和发布此操作方法?

我从堆栈溢出尝试了一些解决方案。

控制台应用中的

代码:

                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:6586/MacCommService/LoadBalanceMacValues");
            webRequest.Method = "POST";
            var data = string.Format("jsonValues={0}", Uri.EscapeDataString(encryptedJson));
            StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream());
            requestWriter.Write(data);
            requestWriter.Close();
MacCommServiceController中的

代码:

        public ActionResult LoadBalanceMacValues(string jsonValues) {
        //var macKey = ConfigurationManager.AppSettings["macKey"].ToString();
        jsonValues = "etc";

        Response.Write("Json from action: " + jsonValues);
        return View();
    }

1 个答案:

答案 0 :(得分:1)

我想你不要设置ContentType的{​​{1}},也不要格式化 Json

httpWebRequest

同样在你的控制器中你应该像这样返回Json:

var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:6586/MacCommService/LoadBalanceMacValues");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    string json = "{ \"jsonValues\" : \"" + Uri.EscapeDataString(encryptedJson) + "\" }";
    streamWriter.Write(json);
    streamWriter.Flush();
    streamWriter.Close();
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
    var result = streamReader.ReadToEnd();
}