我遇到了一个小问题,它停止了我正在尝试实现的功能的开发。
我目前使用以下代码创建了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服务的东西。
由于
答案 0 :(得分:1)
如果我的理解是正确的并且基于此:
我在使用jQuery时遇到问题,因为它无法以跨域方式使用。
您的服务位于其他域中,然后以最简单的方式执行,在您的域中创建REST服务,然后将调用包装到外部服务
看到这个问题
这是一个创建REST服务的演练(没有SVC文件,可以在ASP.Net或MVC应用程序中使用)
Datalist Delete Command Event implementation using Page Methods
这是一个可以下载使用REST服务的完整应用程序
示例:
[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>
答案 1 :(得分:0)
如果您希望它不需要服务器端代码,则至少需要使用客户端代码。 (JavaScript的)。
以下是如何使用JavaScript直接调用Web服务的示例:http://dotnetbyexample.blogspot.com/2007/10/calling-asmx-web-services-directly-from.html
(更多结果不仅仅是这一个提出simple search。)
答案 2 :(得分:0)
正如你所说: -
I am having a problem using jQuery as it can not be used in a cross domain manner
但是,这个问题似乎通过使用ScriptManager
[ Not Tried but ]得到了解决。请参阅此处了解完整示例步骤
Solution 2 : Call WCF Service by Javascript
下的但是,请参阅两个解决方案。
答案 3 :(得分:0)
如果您真的想立即使用HTML。您应该看看REST服务。看看WCF数据服务或Asp.net WebApi。您可以找到许多教程,这些教程可以帮助您轻松实现服务,并让您在HTML中使用jquery查询。