从其他C#服务器端控制器调用ASP.NET post route

时间:2017-09-21 17:09:55

标签: c# asp.net

这适用于具有C#后端的Web应用程序。它的架构方式我无法将其中一个类导入另一个类直接调用该方法。不幸的是,我们的构建过程出了问题,所以我无法调试这段代码,因此我希望尽可能少地进行迭代。

在一个控制器中我们有这个方法:

    [Route("api/uploadFile/{id}")]
    [HttpPost]
    [CustomAuthorize]
    [SwaggerResponse(HttpStatusCode.OK, Description = "File upload successful")]
    [SwaggerResponse(HttpStatusCode.InternalServerError, "Error uploading file")]
    public async Task<IHttpActionResult> PostFile(int id, [FromUri]bool replace=false)
    {
        //code to put the file in the database;
    }

我需要弄清楚如何从不同的控制器调用它。这两个控制器分为两个完全独立的项目,彼此之间并不了解。

我尝试了以下几种变体,但每次更改在构建过程中大约需要8分钟,因此我不想再破解它了:

    HttpClient htc = new HttpClient();
    HttpContent content = new StreamContent(myfile);
    var response = await htc.PostAsync(this.Url.Content("~/api/uploadFile/9992"),  content);
    var responseString = await response.Content.ReadAsStringAsync();

1 个答案:

答案 0 :(得分:0)

因为它在同一服务器上执行所有反射都可以工作。

首先,我将post文件逻辑移到一个单独的方法中。

然后从那里获得对程序集的引用我们就这样做了:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en" ng-app='myApp'>

<head>
  <meta charset="UTF-8">
  <title>Angular Base64 Upload Demo</title>
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
  <link rel="stylesheet" href="style.css">
  <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.15/angular.min.js"></script>
  <script type="text/javascript" src="//cdn.rawgit.com/adonespitogo/angular-base64-upload/master/src/angular-base64-upload.js"></script>
  <script type="text/javascript" src="app.js"></script>

</head>

<body>

  <div ng-controller="UpLoadImage">

    <img style="height: 100px; width: 100px" ng-src="{{preview}}" alt="preview image">
    <label for="file">Select File</label>
    <input ng-model="file" type='file' ng-model-instant name='file' id='fileinput' accept='image/*' onchange='angular.element(this).scope().first(this)' /> {{uploadError}}

    <button ng-click="addImage()">Add image</button>
    <div ng-repeat="slot in slots">
      <img style="height: 100px; width: 100px" ng-src="{{slot.base_image}}" alt="preview image">
    </div>

    <button ng-click="SaveImage()">Save</button>


  </div>


</body>

</html>