C# 如何从nuget包访问控制器内的参数化方法?
我有一个nuget包,其中包含一个MVC控制器-MyController,它有一个带String参数String a的方法method和另一个不带OutParameters的方法method。 我已经在我的MVC服务中安装了这个nuget包,并且已经注册了控制器和路由C# 如何从nuget包访问控制器内的参数化方法?,c#,.net,json,asp.net-mvc,model-binding,C#,.net,Json,Asp.net Mvc,Model Binding,我有一个nuget包,其中包含一个MVC控制器-MyController,它有一个带String参数String a的方法method和另一个不带OutParameters的方法method。 我已经在我的MVC服务中安装了这个nuget包,并且已经注册了控制器和路由 public sealed class MyController : Controller { [System.Web.Mvc.HttpPost] public HttpResponseMessage Method
public sealed class MyController : Controller
{
[System.Web.Mvc.HttpPost]
public HttpResponseMessage MethodWithStringParameter(string a)
{
return new HttpResponseMessage
{
StatusCode = HttpStatusCode.OK
};
}
[System.Web.Mvc.HttpPost]
public HttpResponseMessage MethodWithoutParameters()
{
return new HttpResponseMessage
{
StatusCode = HttpStatusCode.OK
};
}
}
当我尝试用stringParameter方法点击method时,我得到一个异常
无效的JSON原语:a
但是,我能够在没有参数的情况下找到方法,没有任何问题
详细例外
类型:System.ArgumentException
消息:无效的JSON原语:a
StackTrace:System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject位于System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternalInt32深度位于System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserializeString输入,Int32 depthLimit,位于System.Web.Script.Serialization.JavaScriptSerializer.DeserializeJavaScriptSerializer序列化程序的JavaScriptSerializer序列化程序,字符串输入,类型,Int32深度限制位于System.Web.Mvc.JsonValueProviderFactory.GetValueProviderControllerContext controllerContext位于System.Web.Mvc.ValueProviderFactoryCollection.GetValueProviderControllerContext controllerContext位于System.Web.Mvc.ControllerBase.get_ValueProvider位于System.Web.Mvc.ControllerActionInvoker.GetParameterValueControllerContextcontrollerContext,ParameterDescriptor ParameterDescriptor位于System.Web.Mvc.ControllerActionInvoker.GetParameterValuesControllerContext,ActionDescriptor ActionDescriptor位于System.Web.Mvc.Async.AsyncControllerActionInvoker.c_uuDisplayClass21.b_u19; asyncCallback asyncState
您是否尝试将空正文发布到此urlhttp://domainname/My/MethodWithStringParameter?a=abcd我还尝试使用此处提供的一些解决方案,但没有任何帮助。您正在发送什么请求?使用Chrome的高级Rest客户端应用程序以post请求的形式发送这两个请求。对于第一个方法,将a=1作为原始主体传递,而对于第二个方法,则不传递任何内容。内容类型:application/json;charset=utf-8表示这两个都不是有效的JSON。你期待什么?