2010-02-22 162 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文件,你好世界在它的演示。如果您在瀏覽器中查看該文件,它可以正常工作。