2010-02-22 161 views
5

我刚刚尝试从WebForms项目中添加一个WebService(基于asmx)到一个新的MVC项目。我似乎不能在IE浏览器的asmx web服务?标准Web服务(asmx)是否可以与MVC一起使用?

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

更新:

我建立的WebService在.asmx文件最初滴到测试服务器,最近与.NET 4.0设置为VS2010 MVC 2项目。 (Windows Server 2003 IIS 6)

开发(VS 2010)机器上的相同Webservice是否可见?任何想法的差异,可能是一个设置问题?

+0

asmx文件仅包含“<%@ WebService ...”指令,该类全部包含在bin文件夹中的一个dll中... – 2010-02-22 16:00:27

+0

我无法获得as,x的工作,即使我只是添加了一个新的/基本的HelloWorld Web服务,我将它转换为一个WCF服务,并且无法看到它,所以会随之而来。 – 2010-02-23 13:13:27

+1

这很好。 ASMX网络服务被微软视为“传统技术”。所有新的Web服务开发都应该使用WCF。 – 2010-02-28 04:17:20

回答

1

回答我的问题..

我可以看到WCF服务创建一个基本的服务时(并不能看到ASMX服务)

由于WCF被认为是去反正顺便说一下,我这样做。

我并不想让asmx工作。

1

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

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

+0

所有的逻辑都在dll的WebService类中。Web服务由Silverlight应用程序调用,但不确定如何使用Controller执行此操作? – 2010-02-22 16:06:04

0

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

2

据斯科特Hanselman的,该请求是默认由ASP.NET MVC路由机制进行处理:

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

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

1

是它,我创建的基本项目,然后我右键项目名称,并点击添加一个WebService文件,你好世界在它的演示。如果您在浏览器中查看该文件,它可以正常工作。