C# 如何从控制台应用程序调用控制器中的方法

C# 如何从控制台应用程序调用控制器中的方法,c#,asp.net-mvc,controller,console-application,C#,Asp.net Mvc,Controller,Console Application,我尝试从控制台应用程序调用控制器(mvc)中的一个方法。该方法的参数为整数值。如何将整数值作为参数从控制台应用程序传递给控制器。如何运行该方法并进行检查 来自控制台应用程序的方法调用: public class Program { public static void Main() { var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:60035/AddDataTo

我尝试从控制台应用程序调用控制器(mvc)中的一个方法。该方法的参数为整数值。如何将整数值作为参数从控制台应用程序传递给控制器。如何运行该方法并进行检查

来自控制台应用程序的方法调用:

public class Program
{
    public static void Main()
    {


        var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:60035/AddDataToDataBaseController/AddData");
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";
        var response = (HttpWebResponse)httpWebRequest.GetResponse();
        var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();


    }
}
}

控制器方法:

[AllowAnonymous]
    [HttpPost]
    public JsonResult AddData(int fileDetailsId)
    {
        var response = new ResponseDTO();
        FileDetails fileDetails = _addingDataDl.GetFileDetails(fileDetailsId);
        bool hasKnowParts = false;
        FileProcess fileProcess = _addingDataDl.GetFileProcess(fileDetailsId, Enumerations.ProcessType.Parsed);
        try
        {
            Entities.User user = _userRepository.GetUserByUserName(User.Identity.Name);
            if (fileDetails != null)

这看起来有两个问题:

一个是URL中控制器的名称。它应该是
AddDataToDataBase

第二个是缺少整数参数。在请求中添加参数。试试下面的代码

byte[] data = Encoding.ASCII.GetBytes("fileDetailsId=1");//Prepare data to write to write to request
var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:60035/AddDataToDataBase/AddData");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
httpWebRequest.ContentLength = data.Length;//Here you set the content length
Stream stream = httpWebRequest.GetRequestStream();
stream.Write(data, 0, data.Length);//Here you write your parameters to the request
var response = (HttpWebResponse)httpWebRequest.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

您必须将参数放入POST数据中。这是通过写入WebRequest的RequestStream来完成的。像这样:

var filedetails = "filedetails=1";
var data = Encoding.ASCII.GetBytes(filedetails);
var requestStream = httpWebRequest.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();

您还必须将内容类型更改为“application/x-www-form-urlencoded”。

运行此代码时会发生什么?问题很可能是您正在使用URL
AddDataToDataBaseController/AddData
,而它应该是
AddDataToDataBase/AddData
thoughvar httpWebRequest=(httpWebRequest)WebRequest。创建(“);更改它,我对如何传递参数有疑问,当它是整数类型时,如何获得响应