点击超链接时,使用[HttpGet]的控制器动作生成404错误?

时间:2018-06-26 13:05:53

标签: excel asp.net-core asp.net-core-mvc asp.net-core-2.0

背景

我有一个ASP.Net Core v2.0 Web应用程序,该应用程序的动作结果上方具有[HttpGet]属性,不需要接受帖子。

我创建了一个电子表格,其中包含营销团队网站上的页面列表,以及一列直接链接到网站上每个页面的超链接。

电子表格示例:
Example Spreadsheet

问题

一旦营销团队开始单击电子表格中的链接,尽管该页面仍为用户加载,但我开始通过电子邮件(使用NLog配置)收到404错误。

问题排查

我对此进行了故障排除,并发现问题归结于[HttpGet]属性。如果我删除[HttpGet]属性,则单击电子表格中的链接不会产生404错误。

通过浏览器加载页面时,该网站不会产生404错误。

我安装了提琴手,看起来Excel正在使用“ CONNECT”方法。

提琴手截图:
Fiddler screenshot

我认为这可能是问题所在,因为它不是GET,但是当我在Chrome中访问页面时,它也显示了在提琴手中使用“ CONNECT”方法。

我正在寻找是否有人遇到过这个问题,他们是否解决了?我是否需要在[HTTPGet]旁边添加另一个属性来停止Excel或其他导致404错误的第三方软件?

1 个答案:

答案 0 :(得分:0)

我已经解决了自己的问题。

对于其他任何有此问题的人,解决方法是将[HttpGet,HttpHead]设置为属性。如果您有自定义路线,请在下面添加另一个属性:

[Route(“ [controller] / custom-action”)]。

有关信息,我通过使用Visual Studio输出窗口中ASP.Net Core Web Server下拉菜单中的日志来了解此信息。我可以看到,当Excel首次请求链接时,它使用的是HEAD方法而不是GET,这就是引发404错误的原因。

希望可以帮助某人。