我正在尝试在单个网站中部署asp.net MVC和WCF服务。根站点是MVC应用程序,我将运行WCF作为站点的虚拟目录。但是,由于MVC的路由不会将请求中继到服务,因此无法访问服务。它会说“找不到页面”。
http://PC:9000< - mvc应用程序的根
我有一个名为“wcf”的wcf的虚拟目录,
http://pc:9000/wcf/service.svc< - 应该已经访问过该服务,但mvc的路由介入并显示未找到的页面。
知道如何使这项工作?如果呼叫是针对服务的,我将如何忽略路由?
答案 0 :(得分:0)
尝试添加忽略路线:
routes.IgnoreRoute("{resource}.svc");
答案 1 :(得分:0)
这就是我所做的:
由于根应用程序是MVC,当用户尝试访问虚拟目录中的WCF并尝试导航时,MVC将检测到用户尚未在WCF应用程序中进行身份验证。 MVC将做的是它将根据Web配置的指示将其重新路由到身份验证表单页面。
要解决此问题,只需在MVC的Web配置文件中添加以下代码即可。
<location path="WCF">
<system.web>
<authentication mode="None">
</authentication>
</system.web>
</location>
这意味着禁用WCF路径的身份验证。因此,当用户访问WCF服务时,它不会通知MVC WCF尚未经过身份验证,因此不会发生重新路由。
这解决了我的问题。