如何在asp.net MVC应用程序中的虚拟目录中访问WCF服务?

时间:2011-02-01 07:58:28

标签: asp.net-mvc wcf deployment asp.net-mvc-routing

我正在尝试在单个网站中部署asp.net MVC和WCF服务。根站点是MVC应用程序,我将运行WCF作为站点的虚拟目录。但是,由于MVC的路由不会将请求中继到服务,因此无法访问服务。它会说“找不到页面”。

http://PC:9000< - mvc应用程序的根

我有一个名为“wcf”的wcf的虚拟目录,

http://pc:9000/wcf/service.svc< - 应该已经访问过该服务,但mvc的路由介入并显示未找到的页面。

知道如何使这项工作?如果呼叫是针对服务的,我将如何忽略路由?

2 个答案:

答案 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尚未经过身份验证,因此不会发生重新路由。

这解决了我的问题。