2013-12-18 67 views
1

我正在尝试使相同的项目与WCF和MVC一起工作。在ASP.NET MVC中支持WCF

我的问题是:

MVC工作完美,比我包括接口和我在WCF服务的.svc。

当我尝试这样的事:

http://localhost:2986/PAGENAME.svc 

我得到以下错误:

的资源不能被发现。

注意:PAGENAME.svc位于根目录(以及接口)。

期待这个问题,我列入的RegisterRoutes忽略方法:

routes.IgnoreRoute("{resource}.svc/{*pathInfo}"); 
routes.IgnoreRoute("{resource}.svc"); 

但没有工作,要么=/

有谁知道如何解决这一问题?

谢谢!

回答

2

你需要确保你拥有所有必需的文件,这些文件从服务主机(.svc文件)中引用,即:

<@% ServiceHost Service="..."/> 

如果服务指定服务实现。 服务契约(服务实现实现的接口)通常在web.config中配置。

如果服务主机文件位于解决方案的根目录下,则不需要忽略路由。

您需要引用System.ServiceModel。

如果你想通过打开Visual Studio的命令提示符下运行wcftestclient,文件来测试你的服务,你可以 - >添加服务,并添加网址为您服务,如:

http://locahost:12423/MyService.svc 
+0

我有“System.ServiceModel”参考=),我有服务实现过(该服务使用一个MVC使用的库)接口也在那里=/ – Crasher

+0

确保正在调用正确的http处理程序。它应该是处理.svc文件扩展名的那个。这基本上与说你应该确保你的忽略路线正常工作一样。如果有任何帮助,可以检查在IIS中调用哪个处理程序:http://serverfault.com/questions/350318/iis-7-5-how-to-find-which-handlers-are-being-called- for-a-request – Rui

+1

也许更安全的IgnoreRoute是:{* url} .svc。 *表示忽略“/”。请参阅http://stackoverflow.com/questions/3156204/can-someone-explain-asp-net-routing-syntax-to-me。此外,路线顺序很重要,所以请确保你先放置一个 – Rui

1

它已经因为同时我玩过这个游戏,但是我认为在使用MVC时你需要注册一个service route ......但是我不记得是否这就是我要做的事情,或者我只是想为那些干净的路线做这些事情。

要使用服务路径添加一个服务,你会做类似下面

routes.Add("MyService", new ServiceRoute(
    "some/path", 
    new ServiceHostFactory(), 
    typeof(MyService) 
)); 
+1

这将消除需要.svc文件 – Rui

+0

啊这听起来是正确的,它已经有一段时间,因为我玩过WCF –

+0

是的..我不想消除.svc文件=/...其实我想两种可能性..使用SOAP和HTTP =) – Crasher