Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在操作结果中调用web api方法_C#_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

C# 如何在操作结果中调用web api方法

C# 如何在操作结果中调用web api方法,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我有一个Web Api2方法,它返回HttpResponseMessage public HttpResponseMessage Tokenize(Tokenize tokenize) { string requesterIPAddress = ""; try { // Get Requester IP Address RequestIPService requestIPService =

我有一个Web Api2方法,它返回HttpResponseMessage

 public HttpResponseMessage Tokenize(Tokenize tokenize)
    {
        string requesterIPAddress = "";
        try
        {
            // Get Requester IP Address
            RequestIPService requestIPService = new RequestIPService();
            requesterIPAddress = requestIPService.GetRequesterIP();

            //generate token and insert into Token.TokenStore table and return result
            TokenizerService tokenizerService = new TokenizerService();
            string token = tokenizerService.Tokenizer(tokenize.APIKey, tokenize.MerchantID, tokenize.StoreValue, tokenize.StoreType);

            return Request.CreateResponse(HttpStatusCode.OK, token);
        }
        catch (Exception ex)
        {
            return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
        }
    }
现在我有一个客户端要求,我必须在实际结果中调用这个API方法

    [HttpPost]
    public ActionResult Index(Tokenize tokenize)
    {
        TokenizeController tokenizeApi = new TokenizeController();
        HttpResponseMessage response = tokenizeApi.Tokenize(tokenize);
        return View(response);
    }
但在APi方法的最后一行try块中,即

return Request.CreateResponse(HttpStatusCode.OK, token);
它给我一个错误值不能为空

虽然API方法与Ajax调用配合良好


谁能告诉我如何返回HttpResponseMessage

使用新的HttpResponseMessage而不是Request.CreateResponse。您将失去的唯一功能是conneg。如果使用新的StringContenttoken作为内容,则响应将返回为text/plain

您是否可以使用HttpClient实际创建一个web请求并调用您的webapi操作?就我个人而言,我只是对它进行重构,使标记化和索引两者使用的代码位于其他地方,并在两种方法中调用它。将您的代码放在其他地方,然后从webapi调用该方法和您的操作结果。@geogeduckett-它与http客户端配合良好,谢谢George
 public HttpResponseMessage Tokenize(Tokenize tokenize)
    {
        string requesterIPAddress = "";
        try
        {
            // Get Requester IP Address
            RequestIPService requestIPService = new RequestIPService();
            requesterIPAddress = requestIPService.GetRequesterIP();

            //generate token and insert into Token.TokenStore table and return result
            TokenizerService tokenizerService = new TokenizerService();
            string token = tokenizerService.Tokenizer(tokenize.APIKey, tokenize.MerchantID, tokenize.StoreValue, tokenize.StoreType);

            return Request.CreateResponse(HttpStatusCode.OK, token);
        }
        catch (Exception ex)
        {
            return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
        }
    }