如何基于.NET Core搭建兼容原有WCF客户端的REST服务
解决.NET Core REST服务适配原有WCF客户端调用的问题
问题根源在于当前.NET Core服务的路由规则与客户端请求路径不匹配:
- 客户端请求的是
http://localhost:9000/MyService/Test - 现有服务端代码中,
app.Urls.Add("http://localhost:9000/MyService")仅设置了监听地址,路由仍以根路径(/)为起点,导致/Test对应的实际访问路径是http://localhost:9000/Test,与客户端请求不匹配。
以下两种方案可让原有客户端代码无需修改即可正常访问:
方案一:设置全局基础路径(推荐,适合多端点场景)
通过UsePathBase为所有路由统一添加/MyService前缀,所有端点都会自动挂载到该路径下:
var builder = WebApplication.CreateBuilder(); var app = builder.Build(); // 设置服务的基础路径,所有路由都会基于此路径 app.UsePathBase("/MyService"); // 监听地址只需指定主机和端口即可 app.Urls.Add("http://localhost:9000"); app.MapGet("/Test", () => "Hello World!"); app.Run();
方案二:直接在路由中包含前缀
如果只有少数端点,可以直接在MapGet中指定完整的匹配路径:
var builder = WebApplication.CreateBuilder(); var app = builder.Build(); app.Urls.Add("http://localhost:9000"); // 直接将路由设置为客户端请求的完整路径 app.MapGet("/MyService/Test", () => "Hello World!"); app.Run();
两种方案都能让客户端的http://localhost:9000/MyService/Test请求正确匹配到服务端的Test端点,无需修改客户端代码。
内容的提问来源于stack exchange,提问作者Murat
相关产品推荐
相关产品推荐

