【问题标题】:How to access a WCF service in a virtual directory in an asp.net MVC application?如何在 asp.net MVC 应用程序的虚拟目录中访问 WCF 服务?
【发布时间】:2013-03-27 03:54:43
【问题描述】:

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

http://PC:9000

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

http://pc:9000/wcf/service.svc

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

【问题讨论】:

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


    【解决方案1】:

    尝试添加忽略路由:

    routes.IgnoreRoute("{resource}.svc");
    

    【讨论】:

    • 抱歉,这对我不起作用。未找到其页面,该 URL 将尝试重定向到登录页面。
    【解决方案2】:

    这是我所做的:

    由于根应用程序是 MVC,当用户尝试访问虚拟目录中的 WCF 并尝试导航时,MVC 会检测到用户尚未在 WCF 应用程序中进行身份验证。 MVC 将做的是将其重新路由到 Web 配置指示的身份验证表单页面。

    要解决这个问题,只需在 MVC 的 web 配置文件中添加以下代码即可。

    <location path="WCF">
        <system.web>
          <authentication mode="None">
          </authentication>
        </system.web>
    </location>
    

    这意味着禁用 WCF 路径的身份验证。因此,当用户访问 WCF 服务时,它不会通知 MVC WCF 尚未经过身份验证,因此不会发生重新路由。

    这解决了我的问题。

    【讨论】:

    • 请注意,这要求“WCF”路径是应用程序,而不仅仅是虚拟目录。请参阅authentication Element (ASP.NET Settings Schema),其中说:“可配置位置:Machine.config,根级 Web.config,应用程序级 Web.config”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2010-12-18
    • 1970-01-01
    • 2011-09-15
    • 2011-11-22
    • 1970-01-01
    • 2013-11-12
    相关资源
    最近更新 更多