0

実装しようとしている機能の開発を停止する1つの小さな問題に悩まされています。

現在、次のコードで作成されたWCFWebサービスがあります。

 [ServiceContract(Namespace = "http://Sinvise.Service/")]
    public interface ISinvise
    {
        [OperationContract]
        void Output(string value);
    }

    class SinviseService : ISinvise
    {
        second sec = new second();

        public void Output(string value)
        {
            sec.message(value);
        }
    }

主な方法:

var ip = getIP();
            Uri baseAddr = new Uri("http://"+ip+":60185/Sinvise");
            ServiceHost localHost = new ServiceHost(typeof(SinviseService), baseAddr);
            Console.WriteLine("Current System IP: " + getIP());
            try
            {
                Process.Start(baseAddr.AbsoluteUri);
                localHost.AddServiceEndpoint(typeof(ISinvise), new BasicHttpBinding(), "SinviseService");

                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                smb.HttpGetEnabled = true;
                localHost.Description.Behaviors.Add(smb);

                localHost.Open();
                Console.WriteLine("Service initialized.");
                Console.WriteLine("Press the ENTER key to terminate service.");
                Console.ReadLine();

                localHost.Close();
            }
            catch (CommunicationException ex)
            {
                Console.WriteLine("Oops! Exception: {0}", ex.Message);
                localHost.Abort();
            }

アプリケーションは、アプリケーションで呼び出されるWebサービスを設定します。次に、HTMLページを使用して操作を呼び出す必要があります。これらは、アプリケーションに値を渡す単純な操作です。

これで、HTMLはそれ自体ではこれを実行できないことがわかりました。また、アプリケーションの展開でWebサーバーとPHPをパッケージ化する必要があるため、PHPはこの目的のオプションにはなりません(これは私としては実行できません)。アプリケーションには支払いが必要なため、オープンソースソフトウェアを含めることはできません)。

クロスドメイン方式では使用できないため、jQueryの使用に問題があります。

WebサービスはASP.NETとは関係ありませんが、ソフトウェアのユーザーがHTMLページを使用してWebサービスを呼び出すことができるようにするものが必要です。

ありがとう

4

4 に答える 4

1

私の理解が正しく、これに基づいている場合:

クロスドメイン方式では使用できないため、jQueryの使用に問題があります。

サービスが別のドメインにあり、最も簡単な方法で実行し、ドメインにRESTサービスを作成してから、外部サービスへの呼び出しをラップします

この質問を参照してください

これは、RESTサービスを作成するためのウォークスルーです(SVCファイルなしで、ASP.NetまたはMVCアプリで使用できます)

ページメソッドを使用したデータリスト削除コマンドイベントの実装

これは、RESTサービスを使用してダウンロードできる完全なアプリケーションです。

http://sdrv.ms/LJJz1K

例:

[ServiceContract]
public interface IMyService
{
    [OperationContract]
    [WebInvoke(
        ResponseFormat = WebMessageFormat.Json, 
        RequestFormat = WebMessageFormat.Json,
        UriTemplate = "/DeleteFromService",
        Method = "DELETE")]
    void Delete(int id);
}

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService : IMyService
{
    public void Delete(int id)
    {
        // wrap here the call to your external service
        // simulate a long process
        Thread.Sleep(5000);
    }
}

ページ内

<script type="text/javascript" language="javascript">
        function deleteFromService() {
            $.blockUI();
            $.ajax({
                cache: false,
                type: "DELETE",
                async: true,
                url: "/DeleteFromService",
                data: "3", // get your id to delete
                contentType: "application/json",
                dataType: "json",
                success: function () {
                    $(document).ajaxStop($.unblockUI); 
                    alert("done");
                },
                error: function (xhr) {
                    $(document).ajaxStop($.unblockUI); 
                    alert(xhr.responseText);
                }
            });
        }
        jQuery().ready(function () {
                        $("#myButton").click(deleteFromService);
        });
    </script>
于 2012-06-15T21:05:43.570 に答える
0

サーバー側のコードを必要としないものにしたい場合は、少なくともクライアント側のコードを使用する必要があります。(JavaScript)。

JavaScriptを使用してWebサービスを直接呼び出す方法の例を次に示します。http: //dotnetbyexample.blogspot.com/2007/10/calling-asmx-web-services-directly-from.html

(これだけではなく、より多くの結果が簡単な検索で表示されます。)

于 2012-06-15T21:01:50.933 に答える
0

あなたが言ったように:-

I am having a problem using jQuery as it can not be used in a cross domain manner

しかし、この問題はScriptManager[未試行]を使用することで解決されたようです。ステップバイステップの完全なサンプルについては、こちらをご覧ください

ただし、両方のソリューションを参照してください。

于 2012-06-15T21:04:47.303 に答える
0

本当に今HTMLを使いたいのなら。RESTサービスを確認する必要があります。WCFデータサービスまたはAsp.netWebApiを確認してください。サービスを簡単に実装し、HTMLでjqueryを使用してクエリを実行するのに役立つチュートリアルがたくさんあります。

于 2012-06-15T21:06:00.623 に答える