0

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

大约一周以来,我尝试学习制作一个用 C# 编写的 Web 服务(WCF、ASMX Web 服务,我不在乎,不管是最好的),我想使用 JQuery/AJAX(而不是 ASP. NET webforms 导致我想使用 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 服务的最佳实践是什么?是否有一个很好的书面教程来处理每一点,所以它最终确实有效?或者我做错了什么?因为,由于互联网上可能有成千上万的网络服务,这肯定是我做错了,但我永远无法弄清楚是什么。

4

1 回答 1

1

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

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

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

于 2013-06-02T20:13:03.193 回答