Asp.net mvc 如何在asp.net MVC应用程序中访问虚拟目录中的WCF服务?
我正在尝试在单个网站中部署asp.net MVC和WCF服务。根站点是MVC应用程序,我将把WCF作为站点的虚拟目录运行。但是,由于MVC的路由不会将请求中继到服务,因此无法访问该服务。它会说找不到页面Asp.net mvc 如何在asp.net MVC应用程序中访问虚拟目录中的WCF服务?,asp.net-mvc,wcf,deployment,asp.net-mvc-routing,Asp.net Mvc,Wcf,Deployment,Asp.net Mvc Routing,我正在尝试在单个网站中部署asp.net MVC和WCF服务。根站点是MVC应用程序,我将把WCF作为站点的虚拟目录运行。但是,由于MVC的路由不会将请求中继到服务,因此无法访问该服务。它会说找不到页面 尝试添加忽略路由: routes.IgnoreRoute("{resource}.svc"); 以下是我所做的: 由于根应用程序是MVC,当用户尝试访问虚拟目录中的WCF并尝试导航时,MVC将检测到该用户尚未在WCF应用程序中进行身份验证。MVC将要做的是按照web配置的指示将其重新路由到身份
尝试添加忽略路由:
routes.IgnoreRoute("{resource}.svc");
以下是我所做的:
由于根应用程序是MVC,当用户尝试访问虚拟目录中的WCF并尝试导航时,MVC将检测到该用户尚未在WCF应用程序中进行身份验证。MVC将要做的是按照web配置的指示将其重新路由到身份验证表单页面
要解决这个问题,只需在MVC的web配置文件中添加以下代码
<location path="WCF">
<system.web>
<authentication mode="None">
</authentication>
</system.web>
</location>
这意味着禁用WCF路径的身份验证。因此,当用户访问WCF服务时,它不会通知MVC WCF尚未通过身份验证,因此不会发生重新路由
这解决了我的问题。对不起,这对我不起作用。找不到其页面,URL将尝试重定向到登录页面。请注意,这要求WCF路径是应用程序,而不仅仅是虚拟目录。请参阅其中的说明:可配置位置:Machine.config、Root级别的Web.config、应用程序级别的Web.config。