C# 如何从控制台应用程序调用控制器中的方法
我尝试从控制台应用程序调用控制器(mvc)中的一个方法。该方法的参数为整数值。如何将整数值作为参数从控制台应用程序传递给控制器。如何运行该方法并进行检查 来自控制台应用程序的方法调用: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
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。创建(“);更改它,我对如何传递参数有疑问,当它是整数类型时,如何获得响应