部署 asp 网络核心 Web 应用程序后未找到 Web API 404

Web API 404 not found after deploy asp net core web application

我用 vs 2017 创建一个包含两个项目的解决方案:

我有一个 Web Api 控制器

[Route("api/[controller]/[action]")]
public class ClientController : Controller
{
    // GET: api/Client/Get
    [HttpGet]
    public JsonResult Get()
    {
        ClientQuery _Query = new ClientQuery();
        List<ClientLisModel> _Results = _Query.GetAll();

        return new JsonResult(_Results);
    }

在我的 angular 服务中,我创建了一个函数来访问此控制器操作:

this.getListeClient = function getListeClient() {
             var deferred = $q.defer();

                $http({
                    method: 'GET',
                    url: '/api/Client/Get'
                })
                    .then(function (data) {
                        deferred.resolve(data);
                    })
                    .catch(function (msg, code) {
                        deferred.reject(msg);
                        $log.error(msg, code);
                    });

                return deferred.promise;
            }

当我 运行 我的 vs 2017 应用程序时,一切正常。 .但是当我将它部署到 iis 7.5 中的 MyWebSite 时。我有这个错误:

GET http://localhost/api/Client/Get 404 (Not Found)

它应该寻找 http://localhost/MyWebSite/api/Client/Get

我的Web.config是:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\Application.UI.Web.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

谢谢!

此问题的解决方案是在 anuglar 模块中使用配置。

所以在我的 angular js 模块中我添加了这一行:

(function () {
    'use strict';

    angular.module('clientApp', ['ui.bootstrap', 'smart-table']);

    angular.module('clientApp').constant('config', {
        apiUrl: 'http://localhost:55555',
        baseUrl: '/',
        enableDebug: true
    });
})();

然后我像这样修改我的 angular js 服务:

angular
        .module('clientApp')
        .service("clientService", function (config, $http, $q) {
            this.getListeClient = function getListeClient() {
                var deferred = $q.defer();

                $http({
                    method: 'GET',
                    url: config.apiUrl + '/api/Client/Get'
                })
                    .then(function (data) {
                        deferred.resolve(data);
                    })
                    .catch(function (msg, code) {
                        deferred.reject(msg);
                        $log.error(msg, code);
                    });

                return deferred.promise;
            }

发布我的应用程序后,我只需修改 mu angularjs 模块中的 "apiUrl"。