У меня есть угловое приложение, которое отлично работает локально, но когда оно опубликовано на тестовом сервере, оно больше не работает, некоторые из моих запросов POST возвращают 400 - неправильный запрос, а некоторые нет, я понятия не имеюпочему это работает локально, но после публикации это не так.
Что я пробовал:
►Я уверен, что тестовый сервер имеет доступ к базе данных, к которой я подключаюсь, предыдущаянад ним работали версии приложения, а также другие, использующие одну и ту же базу данных.
►Я зарегистрировала все свои объекты, которые отправляю в API, чтобы проверить, пропущены ли какие-то данные или нет, но через них проходят данные, новсе это выглядит одинаково локально и при публикации.
►Я определенно уверен, что это не ошибка cors, поскольку я не получаю ни одного из этих типов ошибок.
МОЯ сеть.файл конфигурации
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\pamcportal.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</location>
</configuration>
Один из POST, который я делаю (сторона надписью)
GetListOfPaidBatches() {
console.log("get paid batches: ", this.amounts);
this.showList = true;
this.showBordRowComponents = false;
this._paidBatches = [];
this._http.post(this._baseUrl + 'api/CheckRun/GetPaidBatches',
this.amounts
).subscribe((recievedList: CheckRunTypeModel[]) => {
let v = recievedList;
this._paidBatchesType = v;
this._paidBatchesType.forEach((pb) => {
let key2: string = pb.batchNo.substr(0, 6);
let contains: boolean = this._filteredPaidList.some(y => y.yearMont === key2);
if (contains) {
this._filteredPaidList.forEach((fl) => {
if (fl.yearMont === key2) {
let include = fl.list.some(y => y === pb);
if (include === false) {
fl.list.push(pb);
}
}
});
} else {
let d: CheckRunTypeModel[] = [];
d.push(pb);
this._filteredPaidList.push({
yearMont: key2,
list: d
});
}
});
this._paid = {};
this._filteredPaidList.forEach((flp) => {
let batchNumbers = flp.list;
let indexer = flp.yearMont;
this._paid[indexer] = batchNumbers
});
},
(error) => {
console.log(error);
},
() => {
this.showBordRowComponents = true;
this.CheckCheckRunTypeArrayPaid(this._paidBatchesType);
this.GetUnreleasedBatches()
});
}
и метод его вызова в API
[HttpPost]
[Route("GetPaidBatches")]
public List<CheckRunTypeModel> GetPaidBatches([FromBody] ClaimsModel data)
{
CheckRunTypeModel detailedBatch = new CheckRunTypeModel();
DataTable datatbl = new DataTable();
List<CheckRunTypeModel> returnList = new List<CheckRunTypeModel>();
DataTable dtable = new DataTable();
List<string> paidList = new List<string>();
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand();
SqlConnection cn = new SqlConnection();
string claimNo = "";
cmd.CommandTimeout = 300;
cn.ConnectionString = _portalConnection;
if (cn.State != ConnectionState.Open)
{
cn.Open();
}
string batchNo = "";
string clientName = "";
string description = "";
string hpcode = "";
try
{
}
catch (Exception e)
{
var msg = e.Message;
}
}
}
catch (Exception e)
{
var msg = e.Message;
}
return returnList;
}
Может кто-нибудь сказать мне, почему это не так?Кинг, когда я публикую приложение на «IIS», но локально оно работает.