iis - 在测试和生产中没有这样的主机
问题描述
在我的 .Net Core 控制器中,我有一个“PublishDraft”操作。这在开发期间在 localhost 中按预期工作。一旦将其部署到测试或生产服务器,此操作将返回“No such host is known”错误。
这是此控制器上的许多操作之一,它们都在测试和生产中工作,除了这个单一的 PublishDraft() 操作。所以这告诉我这不是 DNS 问题,因为所有其他操作都有效。
[HttpPost("PublishDraft")]
public async Task<IActionResult> PublishDraft([FromBody] PublishDraftRequest request)
{
try
{
var existing = _unitOfWork.Drafts.GetAll(d => d.Id == request.DraftId, null, "DraftTags").FirstOrDefault();
if (existing == null)
{
return NotFound("Draft does not exist");
}
var created = await _unitOfWork.Drafts.PublishDraft(existing, User.Claims.GetUserId());
if (created.TreeNodeTypeId == (int)TreeNodeTypes.Private && created.ParentId != null)
{
await _unitOfWork.TreeNodeUser.UpdateUserPermissionsAsync(created.Id, created.ParentId, User.Claims.GetUserId());
}
return Created("TreeNode", created);
}
catch (Exception ex)
{
logger.LogError(ex, User);
return BadRequest(ex.Message);
}
}
无论我在测试或生产中使用 Web 客户端 (Angular) 还是 PostMan 进行测试,我都会在这个单一操作中得到相同的错误。
服务器是 IIS 10。
任何想法为什么会发生这种情况?
更新:
要回答评论者关于异常调用堆栈显示什么的问题,没有例外!控制器操作永远不会被命中,因此不会记录任何异常。
更新 2 - 添加了错误截图
Dev Tools Header 截图(我在这个截图中删除了域名)
我发现了一个有趣的异常,它改变了我看待这个问题的方式,当 DraftId 存在时,我只会收到“未知主机”错误。但是当我传入一个虚假的 DraftId 时,我会收到错误消息“草稿不存在”,这告诉我控制器操作实际上被击中了。
我仍然不知道为什么在测试或生产中出现“未知主机”错误并且它在本地开发中工作,但我正在添加一些跟踪日志以查看是否可以找出问题发生的位置。
已解决- 2021 年 9 月 9 日
这只是我不一致的原因。这一切都归结为端点上的斜线。
(在我的代码中添加跟踪日志帮助我找到了原因。)
我的服务需要使用从控制器操作HttpClient
的方法内部调用外部 api 。PublishDraft()
我的 localhost appSettings 有一个基本端点的配置,如下所示:
"EndPointsConfig": {
"FileStore": "https://localhost:44314/"
}
尾部斜线是正确的。
我的Testing
和Production
appSettings 属性是:
"EndPointsConfig": {
"FileStore": "https://filestore.domain.com"
}
缺少的尾部斜杠导致“没有这样的主机是已知的”错误,因为它必须连接方法的路径并且没有斜杠/
显然是不正确的。
像这样:https://filestore.domain.com/deleterange
添加斜线后,一切正常!
希望其他人发现这对解决类似问题很有用。
解决方案
推荐阅读
- google-apps-script - 调用并运行 doPost
- r - R if else 语句中的奇怪行为
- javascript - 如何为嵌套在数组中的一系列对象添加属性?
- python - 编码具有不同长度的输入以在 sklearn 模型中使用
- java - java - 在Java中循环遍历数组列表时,如何从数组列表中删除某些内容?
- java - 具有特殊模式的日期格式
- api - 从数组中为 Rails API 播种数据
- python - 在 Visual Studio Code 中,如何有效地调整 Pyplot 图形?
- overflow - VHDL numeric_std 函数(“+”)
- javascript - 派发更新到商店不再工作