2012-02-29 49 views
0

我正在尝试学习wcf的实际示例。我跟着scalable wcf solution tutorial和我的服务工作正常,客户端从我的控制台应用程序。行得通。但我想要的是从mvc视图(剃须刀)页面消耗我的服务槽js。在我的客户端控制台应用程序,我访问到代理与访问wcf从mvc视图槽js

IService proxy = new ChannelFactory<IService>(Configuration.MyServiceActiveEndpoint).CreateChannel(); 
List<MyObjectDto> data = proxy.GetMyData(); 

... 如何practicaly achive从MVC视图页面创建这个代理客户(不添加服务引用)。谢谢

回答

0

请查阅servicestack.net以了解.net中最干净和最好的Web服务实现。没有配置,很容易从jQuery调用,并且默认返回json。轻松开始使用NuGet Mvc 3包装。

+0

当然,谢谢,但现在我想解决这个问题。所以任何人? – user1233784 2012-02-29 11:20:08

+0

我是否需要在控制器内部创建代理以创建将与服务进行通信的通道? – user1233784 2012-02-29 12:26:42

0

您正在使用的教程已经注册了一个带有enableWebScript行为的端点 - 当您访问http://server/virtualdirectory/X.svc/json url时,您应该会自动生成一个js代理。将该js文件包含在您的mvc视图中。

如果在MVC的Web应用主机WCF服务,您可以使用Url.Content:

<script src="@Url.Content("~/X.svc/json")" type="text/javascript"></script> 

然后,只需调用JS从服务 - 使用JavaScript从这个职位为例:http://dotnetslackers.com/articles/ajax/JSON-EnabledWCFServicesInASPNET35.aspx

+0

请注意,这是如何从js使用WCF服务的答案。它没有考虑这个问题,如果这是从MVC的Web应用程序做的正确的事情 - [ShaneCourtrille的答案](http://stackoverflow.com/a/9508016/829181)涵盖了这一点。 – armasanea 2012-02-29 23:56:44

1

你不这样做,你真的不这样做。这彻底打破了模型 - 视图 - 控制器(MVC)的整个观点。控制器应该是访问WCF服务并将数据返回给View的人。