0

我被困在一个小问题上,该问题停止了我正在尝试实现的功能的开发。

我目前有一个使用以下代码创建的 WCF Web 服务:

 [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 自己无法做到这一点,并且 PHP 不会成为这方面的选择,因为它需要我在我的应用程序部署中打包一个 Web 服务器和 PHP(我不能这样做应用程序需要付费,因此不能包含开源软件)。

我在使用 jQuery 时遇到问题,因为它不能以跨域方式使用。

Web 服务与 ASP.NET 无关,但我需要一些允许我的软件用户能够使用 HTML 页面来调用 Web 服务的东西。

谢谢

4

4 回答 4

1

如果我的理解是正确的并且基于此:

我在使用 jQuery 时遇到问题,因为它不能以跨域方式使用。

您的服务在另一个域中,然后以最简单的方式进行,在您的域中创建一个 REST 服务,然后包装对外部服务的调用

看到这个问题

这是创建 REST 服务的演练(没有 SVC 文件,可以在 ASP.Net 或 MVC 应用程序中使用)

使用页面方法实现 Datalist 删除命令事件

这是一个完整的应用程序,您可以下载它使用 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[ Not Triedthough ] 得到了解决。请参阅此处以逐步了解完整示例

但是,请参考这两种解决方案。

于 2012-06-15T21:04:47.303 回答
0

如果你现在真的想使用 HTML。你应该看看 REST 服务。看看 WCF 数据服务或 Asp.net WebApi。您可以找到许多教程,这些教程将帮助您轻松实现服务并让您在 HTML 中使用 jquery 进行查询。

于 2012-06-15T21:06:00.623 回答