2010-04-13 83 views
0

我对Web服务完全陌生,无法让我的工作。从网站安装到独立项目时Web服务失败

我的设置是在VS 2008上使用IIS。我有一个解决方案文件,其中包含3个项目:网站,代码和服务。

如果我把我的web服务放到我的网站上,并在本地调用它,那么它将正常工作(这只是一个hello world web服务)。我想将服务放到不同的位置以供多个站点使用。

我不知道我做错了 - 我已经阅读了有关文件迪斯科,访问文件,Silverlight的,闪光,Java等这么多相互矛盾的信息

我只是在寻找快速简单的步骤创建一个可以从JavaScript访问并部署到单独网站的Web服务。最终目标是在web服务中具有功能,以便网站通过JS调用,并在加载时间和异步调用中运行更平滑。

  • 我需要创建迪斯科文件吗?
  • 我需要配置安全性吗? - 我知道这是最好的,我只是想让它工作。
  • 我是否需要在IIS或托管服务器上允许跨浏览器访问?
  • 是否有任何快速参考网站,你可以推荐?
  • 我应该使用WCF作为新技术吗? - 我在MSDN上看到了这一点,但似乎更多的是Windows应用程序,然后是网络应用程序。

我没有收到任何特定的错误代码。我安装了firefox调试工具(firebug),我可以看到标题是什么,但我不知道如何解释它们,并且没有响应被传回。

任何帮助表示赞赏!

+0

你可以尝试基本的“你好,世界”当你只是创建服务创建Web服务。然后你可以一步一步告诉我们你做了什么。事实上,你可能想说如果你使用WCF或ASMX服务。 – 2010-04-13 20:17:20

+0

我讨厌问什么可能是一个简单的问题...我试图使用asmx web服务(这就是为什么我想知道如果wcf是一个更好的方式去),我只是使用默认的Hello World服务,如上所述。我可以在同一个项目中正常工作。只要asmx文件在同一个项目中,我甚至可以在程序集中执行代码。我无法弄清楚如何将asmx项目部署到Web服务器或同一台计算机上的其他IIS目录。我的代码为0并且没有任何信息。我可以手动浏览到asmx文件,但无法通过代码调用它。 – Adam 2010-04-14 06:25:48

回答

1

当你的JS调用您的Web服务中,两个必须位于相同的主机名上 - 这是对浏览器的同源策略的限制。

例如,如果您的webservice位于http://ws.domain.com/report.asmx而您的页面位于http://domain.com/index.aspx那么将不允许直接调用ajax。

你可以通过几种方式解决这个问题。一种常见的方法称为JSON-P,它涉及将ws结果作为js函数返回,然后将ws作为脚本调用。

http://en.wikipedia.org/wiki/JSON#JSONP

+0

我会研究这 - 谢谢!我在网上发现了一些关于交叉访问策略文件的信息(主要针对silverlight和flash)。你知道这是否可以使用?我试图使用它们,但不知道我是不是做错了,或者他们不是为此而做的。 – Adam 2010-04-16 00:11:24

0

您可以在VS Project - > Publish上右键单击,将所有相关文件复制到一个文件夹中。您必须在IIS中创建Web应用程序并将其配置为您的WebService。如果你没有得到有用的错误信息,尝试设置

<configuration> 
    <system.web> 
    <customErrors mode="Off" /> 
    </system.web> 
</configuration> 

我希望这可以帮助,但你的错误的描述是有点含糊...

+0

谢谢!对于模糊的错误信息抱歉 - 我没有得到一个传递给你。 有了这个问题 - 我仍然可以浏览到服务?当我访问http://website/service.asmx时,我没有收到错误,但是当我尝试使用JS调用它时,我收到了错误的响应。 而且,我知道这很可能是一个真正愚蠢的问题 - 我如何在IIS 5中创建*应用程序*?这是在我的本地XP机器上,但我在网上找到的是IIS 6/7。你知道任何好的在线资源吗? – Adam 2010-04-16 00:15:34

+0

嗨,网站/ service.asmx“工作”并不意味着,web服务正在工作。只有当你可以通过网站/ service.asmx页面测试你的方法时,你才能确定(或者构建一个使用web服务的快速windows应用程序)。但是你是对的,这听起来很像JS和服务之间的问题。对不起,不能帮助你与IIS 5 ...无论如何,祝你好运 – Hinek 2010-04-20 07:44:31