我正在尝试模拟一个arcgis服务,并且已经创建了一个简单的ASP.NET MVC应用程序。
我的网站使用的是默认路由映射
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
我的控制器是这样定义的,没有具体的路由
public class ESRIController : Controller
我在控制器中的方法定义为
[Route("/arcgis/rest/services/{serviceName}/FeatureServer/{layerId}")]
public IActionResult FeatureServerLayer(string serviceName, int layerId, Dictionary<string, Microsoft.Extensions.Primitives.StringValues>? queryString)
{}
如果我像这样调用这个方法,就不会有问题
http://localhost:5047/arcgis/rest/services/Landsdowne/FeatureServer/0
但如果像这样调用该函数,则会导致HTTP 500服务器错误
http://localhost:5047/arcgis/rest/services/Landsdowne/FeatureServer/0?f=json
我的函数从未被调用过。该错误发生在ASP.NET核心运行时的某处。
使用Chrome查看请求也不会显示更多信息。
在chrome中没有显示其他响应。
发布于 2021-12-03 03:45:40
我在最初的帖子中没有提到的一件事是,这是一个基于Visual Studio2022的.NET Core6应用程序。
我创建了一个新的.NET Core5应用程序,没有引起任何错误,并且我的方法被正确调用。
我创建了另一个新的.NET核心6MVC应用程序,没有引起任何错误,并且我的方法被正确调用。
两个可以工作的应用程序和一个不能工作的应用程序的唯一区别是,不能工作的应用程序驻留在我的开发计算机上的IIS中(而不是IIS Express)。我之前安装了IISCore6托管捆绑包,这样我就可以通过.NET从远程机器进行调试,这是使用IIS Express做不到的。
所以看起来IIS主机可能是罪魁祸首。我需要在生产服务器上进行测试,以确定这是否仍然是一个问题。
但我需要它托管在我的开发机器上的IIS中,因为arcgis rest api是从Internet调用的,而我的开发机器是在公司防火墙内。我正在使用NGROK作为从互联网到我的机器的隧道。也许我可以配置IIS来应答远程连接?
https://stackoverflow.com/questions/70207358
复制相似问题