Asp.net core Iis反向代理404

Asp.net core Iis反向代理404,asp.net-core,iis,server,iis-8.5,Asp.net Core,Iis,Server,Iis 8.5,我们在服务器上部署了一个由.net core制作的api,并在iis中配置了反向代理 当我们从虚张声势中测试api或直接使用ip地址(比如10.18.0.1/api/Call)时,它工作得很好。然而,一旦我们使用了反向代理,它就会返回404NotFound错误 使用accepts GET、POST和PUT方法实现了端点的基本身份验证。如果我尝试用DELETE方法调用相同的url,它会返回401 我不是DevOps,也不懂这方面的知识,所以我非常感谢您的帮助 ===================

我们在服务器上部署了一个由.net core制作的api,并在iis中配置了反向代理

当我们从虚张声势中测试api或直接使用ip地址(比如10.18.0.1/api/Call)时,它工作得很好。然而,一旦我们使用了反向代理,它就会返回404NotFound错误

使用accepts GET、POST和PUT方法实现了端点的基本身份验证。如果我尝试用DELETE方法调用相同的url,它会返回401

我不是DevOps,也不懂这方面的知识,所以我非常感谢您的帮助

=========================================================================== 更新: 在入站规则上发现问题。代码是这样的

<rule name="InBound001" stopProcessing="true">
   <match url="^api/User/Profile(.*)" />
   <action type="Rewrite" url="http://10.18.1.1/api/User/Profile/{R:1}" />
</rule>

这是一个长期存在的规则,在将新规则添加到web.config之前,该规则正常工作,但出现错误。请注意,以前也添加了新规则,但没有发生错误,这只是最近发生的

当删除操作url上最后一个“/”after/Profile时,该问题已得到修复。url的调用方式如下“http://myapp.com/api/User/Profile/Addess/1", "http://myapp.com/api/User/Profile/123“等等


我想强调的是,在报告问题之前,它工作正常,没有问题。我只想理解为什么它突然不工作,并且在删除“/”时被修复。我的直觉是匹配url的原因,因为它没有“/”但我不确定。如果(.*)表示匹配后面的内容,那么它不应该仍然匹配吗?

这是因为如果按照URL重写,{R:1}将是/Address/1

您重写的URL是:

http://10.18.1.1/api/User/Profile/{R:1}
因此,最终重写的URL将如下所示:

这将导致URL中出现额外的“/”

解决方案:

解决方案1:修改匹配URL:

<rule name="InBound001" stopProcessing="true">
   <match url="^api/User/Profile/(.*)" />
   <action type="Rewrite" url="http://10.18.1.1/api/User/Profile/{R:1}" />
</rule>

解决方案2:修改操作URL:

<rule name="InBound001" stopProcessing="true">
   <match url="^api/User/Profile(.*)" />
   <action type="Rewrite" url="http://10.18.1.1/api/User/Profile{R:1}" />
</rule>


上述两种解决方案都可以解决此问题。

了解如何使用FRT调试规则。如何在配置文件中配置反向代理?我认为这可能是一个配置问题。@DingPeng不太清楚如何使用URL重写,但DevOps会在web.config文件上绘制入站/出站规则。您的URL重写规则是什么?根据您提供的信息,我们不知道出了什么问题。您也可以使用失败请求跟踪来查看错误日志。感谢您的回答。这将对我非常有用。然而,让我仍然感到不安的是,为什么它这样工作的时间最长。