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



我试图从控制台应用程序调用控制器(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"。

最新更新