需要 ASP.NET (3.5) ScriptManager 的帮助来通过 AJAX 调用 WCF JSON 数据
我正在尝试让 ASP.NET (Framework 3.5)、AJAX 和 JSON 正常工作。 我有两个问题。 首先是,当我按照 ASP.NET 的要求添加以下标记时:
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]
我发现无法将其添加到接口声明之上,只能添加到类之上。 我希望这段代码成为一个接口。 有人可以告诉我我做错了什么吗? 错误如下:
属性 AspNetCompatibilityRequirements 不是 对此声明类型有效。 这是 仅对“类”声明有效。
[ServiceContract(Namespace = "API.Trade")]
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]
public interface ITradeService
{
[OperationContract(Name = "GetAllCategories")]
string GetCategories(string itemtype, string keywordstring);
[OperationContract(Name = "GetCategoryByNodeLevel")]
string GetCategories(int NodeLevel);
[OperationContract]
int GetTrades(string KeywordString, string TradeType);
}
第二个问题是,在 ASPX ScriptManager 标记中:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="?" />
</Services>
</asp:ScriptManager>
我注意到 Path= 属性应该指向 .SVC 文件。 到目前为止,我已经 成功地使用 WCF 类库来完成我的需要。 班级图书馆 有我编译的 Trade.cs、TradeService.cs 和 ITradeService.cs 文件,然后 在我的 Web 项目中引用为我的 Web 服务。
那么,“Path=”应该指向什么? 或者说,我需要补充什么?
我正在边学习边学习,感谢您的耐心。 提前致谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
关于第一个问题。 该属性被定义为仅适用于类,因此您不能在其他任何东西上声明它。
该路径应指向您的服务正在侦听的端点(例如/services/myserivce)。
With respect to the first question. The attribute is defined to be only applicable to a class, so you can't declare it on anything else.
The path should point to the endpoint where your service is listening (e.g. /services/myserivce).
该路径应该是 HTTP 服务的服务端点:
http://host.example.com/tradeservice.svc/method
。您只能将该属性应用于接口(类)的实现,而不能应用于接口本身。
The path ought to be the service endpoint for an HTTP service:
http://host.example.com/tradeservice.svc/method
.You can only apply the attribute to an implementation of the interface (a class) not the interface itself.
至于你的第二个答案。 我相信该路径需要指向实际的 Web 服务端点(.svc 或旧的端点。我忘记了,抱歉)。
您可以做的是创建一个 WebService、TradeService.svc,并实现 ITradeService 接口。 作为服务上的私有变量,创建 TradeService 的实例,并将其用作代理......就像这样
有意义。
As for your second answer. I believe the path needs to point to a actual webservice endpoint (.svc or the old one.. I forget off the top my head, sorry).
What you can do is create a WebService, TradeService.svc, and implement the ITradeService interface. As a private variable on the service create a instance of TradeService, and use it as a proxy... like so
make sence.
在 webconfig 中使用 serviceHostingEnvironment 标记:
参考:http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.requirementsmode(v=vs.110).aspx
TradeService.svc。 您也可以通过添加新项目>来执行相同的操作 世界碳纤维
服务,但这将覆盖您的服务 cs 文件。 一旦你有
添加您的 svc 文件后,您可以添加以下行:
请注意,WebScriptServiceHostFactory 会自动将 ASP.NET Ajax 端点添加到您的服务中。 最后将您的“路径”属性指向这个新创建的“TradeService.svc”。
您可以通过访问 http://localhost.me/TradeService.svc 来测试您的服务,
并且 Ajax 支持可以是在 http://localhost.me/TradeService.svc/jsdebug 进行测试
参考:http://berniecook.wordpress.com/ 2012/01/08/consuming-a-wcf-service-with-jquery-or-scriptmanager/
源代码:https://docs.google.com/open?id=0Bz2usIBCcor0NDQxZDc2ODYtNTUzMi00OTRlLTlhOGMtMGI4Y2RhNGIzYWNj
in webconfig by using serviceHostingEnvironment tag:
Reference : http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.requirementsmode(v=vs.110).aspx
TradeService.svc. You can also do same by adding new item > WCF
Service but that will override your service cs files. Once you have
your svc file added then you can add following line:
Note that WebScriptServiceHostFactory will automatically add ASP.NET Ajax endpoint to your service. Finally point your "path" attribute to this newly created "TradeService.svc".
You can test your service by visiting http://localhost.me/TradeService.svc
And Ajax support can be tested at http://localhost.me/TradeService.svc/jsdebug
Reference : http://berniecook.wordpress.com/2012/01/08/consuming-a-wcf-service-with-jquery-or-scriptmanager/
SourceCode : https://docs.google.com/open?id=0Bz2usIBCcor0NDQxZDc2ODYtNTUzMi00OTRlLTlhOGMtMGI4Y2RhNGIzYWNj