提问人:Anusha Bivera 提问时间:10/30/2023 最后编辑:marc_sAnusha Bivera 更新时间:10/30/2023 访问量:30
为什么ajax调用期望类型json在生产中未捕获HttpStatusCodeResult中的消息,但在Staging中工作正常?
why does ajax call expecting type json not capture message in HttpStatusCodeResult in production but works fine in Staging?
问:
我有一个应用程序,其中 ASP.NET 4.6 Web API 在发生错误时返回对象,并在成功时返回 JSON 对象:HttpStatusCodeResult
public class CertificationController : Controller
{
public async Task<ActionResult> GetImagesAsync(string certFilter)
{
try
{
int imageCount = GetImagesCount(certFilter);
if (imageCount == 0)
{
return new HttpStatusCodeResult(404, "No images to download");
}
else if (imageCount > 100)
{
return new HttpStatusCodeResult(400, "Cannot download more than 100 images");
}
else
{
string PathToImageZipfile = ZipImages(certFilter);
return Json(new{zipfile=PathToImageZipfile});
}
}
catch(Exception e)
{
return new HttpStatusCodeResult(400, "Failed to download images");
}
}
}
上面的 API 方法是使用 Ajax 在前端调用的:
getImages(filtercert: string): any {
notifierInstance.setNotifier(true, appConst.LoadingText);
var certDataFilter = ko.toJSON(filtercert);
return $.ajax({
url: "/certificate/getImagesAsync",
data: '{"certfilter":' + certDataFilter + '}',
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
async: true,
beforeSend: function (xhr) {
notifierInstance.setNotifier(true, appConst.downloadWaiting);
},
success: function (data, textStatus, xhr) {
window.open(data);
notifierInstance.setNotifierSelfHide(appConst.downloadWaiting);
},
error: function (xhr, status, error) {
if (xhr.status == 400) {
notifierInstance.setNotifierErrorSelfHideLongWait(error);
}
else if (xhr.status == 404) {
notifierInstance.setNotifierWarningSelfHideLongWait(error);
}
else {
notifierInstance.setNotifierError(appConst.ErrorLoadingText);
}
}
});
}
ajax 调用能够在暂存和较低环境中读取对象内部的自定义消息。但在生产环境中,ajax 调用无法读取对象内部的自定义消息。HttpStatusCodeResult
HttpStatusCodeResult
我知道,由于ajax需要JSON类型的对象,因此ajax调用无法读取中的自定义消息。但是,该问题仅在生产环境中发生,我必须在较低的环境中重新创建此问题,以说服我的主管 API 代码无法返回到期望 JSON 类型响应的 ajax 调用。HttpStatusCodeResult
HttpStatusCodeResult
如何在开发/QA/暂存环境中重现此生产问题?
我尝试在开发环境中部署,其中连接字符串指向开发数据库的生产代码。代码在开发环境中没有任何错误
答: 暂无答案
评论