WCF服务是MVC应用程序的一部分

本文关键字:一部分 应用程序 MVC 服务 WCF | 更新日期: 2023-09-27 18:35:15

我在MVC4中有一个web应用程序。我将在共享托管提供商上托管。我想用WCF服务来扩展它以上传文件。(将有一个WPF桌面应用程序,允许用户直接从他们的电脑上传文件。(

我宁愿以某种方式"一起"托管它,以避免对存储目录的读/写访问出现问题,但我不知道如何做到这一点。

  1. 我应该在MVC应用程序中将WCF作为自主机托管吗?

  2. 我应该将WCF服务作为应用程序还是类库?

  3. 如何将其与MVC应用程序结合在一起?

WCF服务是MVC应用程序的一部分

我终于找到了让它工作的方法。

在MVC应用程序Web.config中添加:

<system.serviceModel>
    <serviceHostingEnvironment  aspNetCompatibilityEnabled="true"/>
</system.serviceModel>

在您的路由配置--->Global.asax或App_Start/RoutesConfig(取决于MVC版本(中添加:

public static void RegisterRoutes(RouteCollection routes)
{
    ...
    routes.Add(new ServiceRoute("hello", new ServiceHostFactory(), typeof(YourServiceClass)));
    ...
}

现在,您的服务显示在localhost/hello下,或者您部署应用程序的任何位置。

默认情况下使用BasicHttpBinging。如果你需要其他人,你必须实现自己的ServiceHostFactory。根据我的观察,这种方法只适用于HTTP绑定。当我尝试添加NetTcpBinding时,它失败了。

我们一直以以下方式进行:

  1. 创建WCF类库
  2. 在ASP.NET MVC 4 Web应用程序中引用WCF类库
  3. 在ASP.NET web应用程序中创建Svc文件,使WCF端点可用
  4. 也许您需要使用web.config文件中的设置,该文件现在在ASP.NET设置旁边包含WCF服务端点设置

由于您已经在构建MVC4应用程序,您还可以考虑使用MVC4+Web API,因为它们可以一起工作而没有任何问题(Web API以前称为WCF REST(。

如果您仍然决定使用WCF,我不会将其与MVC4应用程序混合在同一个项目中,而是将其作为附加的IIS应用程序与MVC4并行托管。