1

IIS 7.5 で単純な asmx Web サービスを使用して Web アプリケーションをホストしました

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace TestWebService
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class Test : System.Web.Services.WebService
    {
        [WebMethod]
        public static string HelloWorld()
        {
            return "Hello World";
        }

    }
}

呼び出しボタンをクリックするhttp://localhost/Test/Test.asmx?op=HelloWorldと正常に動作しますが、ASP.NET 開発サーバー () で実行されている別の Web アプリケーション プロジェクトから $.ajax() を使用してこのメ​​ソッドを呼び出そうとするとhttp://localhost:1756/HTMLPage1.htm、エラー response.status が 0 になり、 Web メソッドを呼び出すことができません。これが私のコードです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Consume Test </title>
    <script src="jquery-1.5.1.js" type="text/javascript"></script>
    <script type="text/javascript">

        function displayMessageCall() {

            $.ajax({
                type: "POST",
                url: "http://localhost/Test/Test.asmx/HelloWorld",
                data: '{}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: successMsg,
                error: errorMsg

            });
        }

        function successMsg(response) {
            alert('Success');
        }

        function errorMsg(response) {
            alert(response.status + " " + response.statusText)
        }

        $(document).ready(function () {
            displayMessageCall();
        });
    </script>
</head>
<body>
</body>
</html>

何か不足していますか?

4

1 に答える 1

0

同じオリジンポリシーに遭遇しているだけだと思います。

ポートの違いにより、ブラウザは JavaScript が Web サービスに到達するのを制限しています。もちろん、いくつかの回避策があります。

于 2012-09-03T09:24:54.780 に答える