mvc路由引起非同步呼叫web服務的問題

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   os   io   檔案   

  從一篇blog得知使用指令碼可以非同步呼叫Web服務,覺得很新鮮,因為自己很少用到Web服務,所以決定寫一寫看看什麼效果。

  首先在UI項目(我使用的是MVC4.0)裡建立一個Web服務。

  

  添加Web服務後,預設有一個HelloWorld方法。調用該方法有兩種形式,一是服務端通過執行個體化對象調用,二是前端指令碼非同步

調用。代碼分別是:

1.服務端調用

 

 public ActionResult Index() {     WebService1 ws = new WebService1();     var str = ws.HelloWorld();     return View(); }

 

2.指令碼調用

 function CallBack() {            $.ajax({                type: "POST", //注意這個地方web服務不支援GET請求                contentType: "application/json;utf-8",                url: "http://localhost:7306/WebService1.asmx/HelloWorld",                data: null,                dataType: "json",                success: function (result) {                    alert("success");                },                error: function() {                    alert("error");                }            });        } CallBack();

  結果指令碼調用發生錯誤。右擊WebService1.asmx——》從瀏覽器查看——》點擊調用HelloWorld,返回404錯誤。

  

  

  我想這可能是MVC路由造成的。web服務無法根據路由規則找到HelloWorld方法,於是建立了一個MVC3.0(MVC3.0

預設是沒有路由檔案的)程式和一個WebForm程式。經測試在這兩者中不存在這樣的問題,我又把項目裡的路由注釋掉。

結果web服務可以正常訪問了。

  經過一番測試,從而證實了自己的想法。看來,在存在路由的項目裡,非同步呼叫web服務還要進行簡單的封裝,即需要

把服務的方法放在控制器的某一方法裡。這樣,既不影響路由又能滿足非同步呼叫。

  上面說了mvc路由引起非同步呼叫web服務的問題。還有一個問題是與路由無關。當你右擊在瀏覽器查看調用HelloWorld

方法時,重新整理頁面HelloWorld方法都能正常訪問。但是如果你在瀏覽器url地址欄裡斷行符號,會發生下面錯誤,但並不影響使用。

  對於這一錯誤,個人覺得很是奇怪,有待查證。

  

  

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.