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

And*_*Gis 10 .net c# asp.net-mvc wcf asp.net-mvc-4

我在MVC4中有一个Web应用程序.我将主持一个共享的托管服务提供商.我想用WCF服务扩展它以上传文件.(WPF桌面应用程序将允许用户直接从他们的PC上传文件.)

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

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

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

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

And*_*Gis 14

我终于找到了如何让它发挥作用.

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

<system.serviceModel>
    <serviceHostingEnvironment  aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)

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

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

就是这样.现在,您的服务显示在localhost/hello下或您部署应用程序的任何位置.

这默认使用BasicHttpBinging.如果您需要其他,则必须实现自己的ServiceHostFactory.根据我的观察,此方法仅适用于HTTP绑定.当我尝试添加NetTcpBinding时失败了.