gpt4 book ai didi

c# - ASP.NET MVC 2 问题 - 路由中的点

转载 作者:太空狗 更新时间:2023-10-29 23:18:18 25 4
gpt4 key购买 nike

我正在空白,需要快速动手。谷歌让我失望了。我正在努力用 ASP.NET MVC 替换 WCF/REST Starter Kit。我想让转换尽可能轻松,所以我尝试创建一个路由来匹配以下 URL:

http://localhost/services/MyService.svc/UserInfo

我在 Global.asax.cs 中创建了路由:

routes.MapRoute(
"MyServiceDefault",
"services/MyService.svc/{action}/{id}",
new {
controller = "MyService",
action = "UserInfo",
id = UrlParameter.Optional
}
);

我很快意识到,由于 URL 的 MyService.svc 部分中的 .,请求甚至没有发送到我的应用程序。

我缺少什么来强制将请求传递到我的应用程序而不是由服务器作为静态资源处理?

更新

我忘了说,我也试过将以下内容添加到 Web.config 中,但没有成功:

<httpRuntime relaxedUrlToFileSystemMapping="true" />

最佳答案

事实证明,搜索正确的术语组合最终会产生结果。 Phil Haack 实际上有一个关于这个确切问题的 block 帖子:

Overriding a .svc Request With Routing

事实证明,对于 *.svc 扩展名,只需添加 <httpRuntime relaxedUrlToFileSystemMapping="true" />到 Web.config 是不够的。

在其中一个框架 Web.config 文件中,有一个与 *.svc 关联的构建提供程序,它在请求到达 .NET MVC 之前接管请求(并且失败,因为这不是真正的 WCF 服务)。一旦你知道了这一点,就可以很容易地在你的应用程序的 Web.config 中删除构建提供者:

<system.web>
<compilation debug="true" targetFramework="4.0">
<buildProviders>
<remove extension=".svc"/>
</buildProviders>
...
</system.web>

关于c# - ASP.NET MVC 2 问题 - 路由中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5732507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com