我的MVC应用程序中有以下路径:
routes.MapRoute(
name: "Default",
url: "api/{server}/{port}/{route}",
defaults: new {
controller = "Home",
action = "Index",
server = UrlParameter.Optional,
port = UrlParameter.Optional,
route = UrlParameter.Optional }
);
当网址为http://localhost:80/api/myserver.mydomain.net/8080/mypage
时,此路线会被点击,但当我将网址更改为http://localhost:80/api/myserver.mydomain.svc/8080/mypage
时,路线突然不会被点击。知道为什么简单地将我的路线中的参数从'.net'改为'.svc'会停止工作吗?
答案 0 :(得分:2)
我找到了问题here的答案。我所要做的就是从我的网站上删除.svc构建提供程序:
<system.web>
<compilation debug="true" targetFramework="4.0">
<buildProviders>
<remove extension=".svc"/>
</buildProviders>
...
答案 1 :(得分:1)
.svc
是WCF端点的路径扩展,因此IIS将通过不同的机制(ISAPI模块/处理程序)处理此问题,而不是通过MVC / WebAPI路由引擎。
尝试将以下内容添加到web.config
,它会强制IIS在每次请求时运行路由引擎。
<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
.....
注意:这可能会给您的网页请求带来不必要的开销。
另一种选择可能是删除模块本身,但这会影响您可能正在运行的任何WCF端点。
<configuration>
<system.webServer>
<modules>
<remove name="ServiceModel-4.0" />
.....