WCF服务作为MVC应用程序的一部分
我在MVC4中有一个Web应用程序。 我将主持一个共享的托管服务提供商。 我想用WCF服务扩展它以上传文件。 (WPF桌面应用程序将允许用户直接从他们的PC上传文件。)
我宁愿以某种方式“一起”托管它以避免存储目录的读/写访问问题,但我不知道如何做到这一点。
-
我应该在MVC应用程序中托管WCF作为自我主机吗?
-
我应该将WCF服务作为应用程序还是类库?
-
如何将它与MVC应用程序结合在一起?
我终于找到了如何让它发挥作用。
在您的MVC应用程序Web.config中添加:
在您的路由中配置—> 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时,它失败了。
我们一直以下列方式执行此操作:
- 创建WCF类库
- 在ASP.NET MVC 4 Web应用程序中引用WCF类库
- 在ASP.NET Web应用程序中创建一个Svc文件,使WCF端点可用
- 也许你需要使用web.config文件中的设置,它现在包括ASP.NET设置旁边的WCF服务端点设置。
由于您已经在构建MVC4应用程序,因此您可以考虑使用MVC4 + Web API,因为这些应用程序没有任何问题(Web API以前称为WCF REST)。
如果您仍然决定坚持使用WCF,我不会将它与MVC4应用程序混合在同一个项目中,而是将其作为附加的IIS应用程序与MVC4并排放置。
- 如何在外部浏览器中打开webBrowser控件中的链接?
- 即使在WPF中提供CommandParameter后,按钮仍未启用
- 在OwnerDraw模式下ListBox DrawItem HotLight状态?
- XmlSerializer更改编码
- 如何从CrystalReport调用StoredProcedure?
- 使用C#中的正则表达式从完整路径解析文件名
- 如何在没有互操作程序集的情况下将任何文件类型嵌入到Microsoft Word中
- 如何在不使用配置文件的情况下以编程方式添加maxItemsInObjectGraph?
- Master-Detail使用Razor,ASP.NET MVC 3和.NET 4.0创建视图