我使用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);
}
在我的角度服务中,我创建了一个访问此控制器操作的函数:
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;
}
当我从2017年开始运行我的应用程序时,一切正常。但是当我在iis 7.5中将它部署到MyWebSite时。我有这个错误:
获取http://localhost/api/Client/Get 404(未找到)
它应该寻找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>
谢谢!
答案 0 :(得分:0)
此问题的解决方案是在anuglar模块中使用config。
所以在我的角度js模块中,我添加了这一行:
(function () {
'use strict';
angular.module('clientApp', ['ui.bootstrap', 'smart-table']);
angular.module('clientApp').constant('config', {
apiUrl: 'http://localhost:55555',
baseUrl: '/',
enableDebug: true
});
})();
我修改我的角度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”。