标准Web服务(asmx)是否适用于MVC?

时间:2010-02-22 15:48:36

标签: c# asp.net-mvc web-services asmx

我刚刚尝试将WebForms(基于asmx)从WebForms项目添加到新的MVC项目中。我似乎无法访问IE中的asmx webservice?

在MVC中这应该是一样的,我在服务文件夹中有服务,如果它在一个视图中,或者这个asmx是否应该在'MVC'路由之外工作?

更新

我将最初放入.asmx文件的WebService设置到测试服务器上,最近使用.Net 4.0为VS2010 MVC 2项目设置。 (Windows Server 2003 IIS 6)

开发(VS 2010)机器上的Web服务是否可见?关于差异的任何想法,可能是设置问题?

5 个答案:

答案 0 :(得分:2)

根据Scott Hanselman的说法,默认情况下,请求由ASP.NET MVC路由机制处理:

  

为什么ASP.NET MVC没有抓住请求?两个原因。首先,RouteCollection上有一个名为RouteExistingFiles的选项。默认情况下,它设置为false,这会导致ASP.NET MVC在磁盘上存在文件时自动跳过路由。 (Source

这表明其他地方存在问题。

答案 1 :(得分:1)

如果您需要快速/简单/脏解决方案,请以某种方式将ASMX服务从MVC路由中拉出来。

如果您想以更好的方式做事,请从ASMX服务中提取逻辑,并在MVC应用程序中为其创建新页面。然后,您可以在Controller中实现逻辑,并允许View处理返回SOAP消息(或者您可以使用JSON,具体取决于谁正在使用该服务)。

答案 2 :(得分:1)

回答我自己的问题..

我在创建基本服务时可以看到WCF服务(并且看不到asmx服务)

由于WCF被认为是最佳方式,我正在这样做。

我没有让asmx工作。

答案 3 :(得分:1)

是的,我创建了基础项目,然后我右键单击了项目名称,并添加了一个带有hello world演示的webservice文件。如果您在浏览器中查看该文件,则可以正常工作。

答案 4 :(得分:0)

它应该在MVC路由之外工作。只使用asmx文件创建一个文件夹应该是足够的。我的项目中有一个'webservices'文件夹,效果很好!无需设置路由以忽略路径,该文件确实存在于服务器上。