【问题标题】:Looking for a webservices tutorial with instructions that works [closed]寻找带有有效说明的 Web 服务教程 [关闭]
【发布时间】:2013-06-02 13:34:13
【问题描述】:

好吧,我几乎达到了想要打破东西的挫败感。形象地说当然。

大约一周以来,我尝试学习制作一个用 C# 编写的 Web 服务(WCF、ASMX Web 服务,我不在乎,无论是最好的),我想使用 JQuery/AJAX 来访问 Web 服务(以及没有 ASP.NET 网络表单,因为我想使用 AngularJS),或者如果更好,生成一个调用 WCF 的代理。

到目前为止我已经尝试过: 我从普通的 Web 服务开始(在 Visual Studio 2012 中:启动一个空的 ASP.NET Web 应用程序并向其添加一个 Web 服务)。我运行网络服务并且它工作。然后我将 Web 服务发布到 IIS,以便我可以从另一台计算机访问它。然后出现第一个问题,它不会工作。似乎我必须在 IIS 上安装 ASP.NET。它可以工作,但是当我在另一台计算机上调用 Web 服务时,我收到一条消息,我只能在本地计算机上调用 Web 方法。

查看这条消息给了我很多相同的结果:我必须配置我的 web.config 并且我必须向其中添加 httpGet 和 httpPost 标记。所以我这样做了,但是......仍然不起作用。进一步搜索并没有给我正确的答案或解决方案。

但是我读到的是这种Web服务方式已经过时了,我应该使用WCF。因为我希望它能够工作,并且以何种方式工作并不重要,只要服务在 c# 中并且客户端是 JS(使用 AngularJS)我很高兴。

所以我搜索了教程,找到了很多教程,关注了其中的许多教程,但没有一个有用,至少对我来说不是。错误和消息是我得到的,当我解决一个消息或错误时,我得到下一个。

使用 WCF,我现在可以调用操作合同,但我无法传递操作合同的参数。也许是 Json 语法错误?我不知道。根据 StackOverflow 上的一些回答,我不得不添加一个 RequestFormat。所以我做了。而且我还必须将 WebGet 更改为 WebInvoke。但是现在我收到一个 405 错误并对其进行搜索,这似乎是一个 Post/Get 问题。因此,我将 AJAX 调用中的 Type 更改为 Post(它应该根据服务标头),但调用保持在 GET 上。而且我根本不明白,经过很长时间的尝试,我开始感到沮丧。

底线是:关于 Web 服务的最佳实践是什么?是否有一个很好的书面教程来处理每一点,所以它最终确实有效?或者我做错了什么?因为,由于互联网上可能有成千上万的网络服务,这肯定是我做错了,但我永远无法弄清楚是什么。

【问题讨论】:

    标签: c# javascript jquery ajax web-services


    【解决方案1】:

    确保 WebDAV 未在 web.config 中托管 Web 服务的站点/服务器上运行:

    <system.webServer>
        <modules>
            <remove name="WebDAVModule" />
        </modules>
    </system.webServer>
    

    我还建议查看 ServiceStack 以获取 .NET Web 服务、大量文档和示例,例如HelloWorld & Wiki

    【讨论】:

    • 感谢您的链接。我会调查一下,看看我能不能让它工作。
    • 在开始查看链接之前,我先尝试了关闭 WebDAV 的选项。这奏效了。现在我有一个 web 服务可以工作,我想知道 SerivceStack 是否比 asmx webservices 好得多?因为如果是这样,我也要试试。
    • 这是一个见仁见智的问题,取决于您的建筑,对于使用 ASMX 的一次性简单 Web 服务(例如,给我一个国家/地区列表)可能“足够好”,但是 ASMX 现在是一种遗留技术,被 WCF 取代,并且在一定程度上是 WebAPI(补充而不是取代 WCF)。有关差异的概述,请参阅this postRazor Rockstars 也有使用 ServiceStack 和 AngularJS 的例子.....
    猜你喜欢
    • 2012-10-01
    • 2011-08-06
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    相关资源
    最近更新 更多