我已经编写了一个.NET Web服务,供我的控制之外的客户端使用(我的服务器是用PHP编写的实时服务器的模拟器)。 Web服务按需要工作,但客户端无法在其调用中添加.asmx扩展或任何扩展。他们基本上使用http://localhost/soap/MyWebService而IIS期望http://localhost/soap/MyWebService.asmx。有没有办法让IIS响应没有.asmx扩展名的请求?调用没有.asmx扩展名的IIS Web服务
3
A
回答
7
添加通配符映射,这将借道ASP.NET的所有请求:
你也需要做一些URL重写,以允许传入的请求http://localhost/soap/MyWebService
映射到http://localhost/soap/MyWebService.asmx
。
http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
基本上,你可以添加类似下面你Application_BeginRequest
方法:
string path = Request.Path;
if (path.Contains("/soap/") && !path.EndsWith(".asmx"))
Context.RewritePath(path + ".asmx");
我没有测试它(和它的一个黑客),但它应该让你开始。
4
你也可以把它放在一个目录中,然后在IIS中将它设置为默认文档。
在服务器:C:/mywebsite.com/mywebservice/mywebservice.asmx
在IIS中设置mywebservice.asmx作为默认文档
0
在我看来, PHP客户端有一些问题。他们不应以任何方式对服务的URL进行表述。无论服务器元数据或客户端配置中指定的URL是他们应该使用的URL。
我不知道PHP,但任何人都可以告诉我为什么PHP对于网址中有多少点有意义?我看不出任何客户对我的服务是否在http://localhost/foo/bar或“http://localhost/foo/b.a.r.asmx?PHP=0”都有影响。
0
在php中,你只需要调用wsdl,你不需要asxm或者.net所做的那种愚蠢的事情。
一个简单的例子
$wsdl = "http://domain/wsdlfile.wsdl"; //url to wsdl
$client = new SoapClient($wsdl,array('trace' => 1,'encoding' => 'UTF-8','exceptions' => 0));
$Return = $client->callfunction();
echo htmlspecialchars($client->__getLastResponse());
仅此而已。
相关问题
- 1. Silverlight4调用ASMX Web服务
- 2. 从另一个.asmx Web服务调用.asmx Web服务
- 3. 从WCF服务调用asmx Web服务
- 4. 从WCF服务提供JSON服务在IIS中没有扩展
- 5. 调试asmx web服务
- 6. 调用Web服务的.asmx使用AJAX
- 7. Web服务.asmx没有正确编译
- 8. ASMX Web服务
- 9. 使用$ .get调用Web服务.asmx jquery
- 10. IIS-服务无扩展名的PHP文件,有或没有斜线
- 11. 从jQuery调用ASP.NET ASMX Web服务
- 12. 从Web服务URL中删除.asmx扩展
- 13. IIS文件没有扩展
- 14. 为ASMX Web服务
- 15. ASP.NET ASMX Web服务
- 16. Web服务ASMX - WCF
- 17. IIS 7忽略没有文件扩展名的MapPageRoute
- 18. IIS服务器.m3u8扩展没有打开
- 19. WebMethods没有发送ACK/FINISH到IIS Web服务调用
- 20. 没有扩展名
- 21. asmx web服务的限制
- 22. 支持扩展服务器端包括(XSSI)的IIS mod /扩展?
- 23. 在不扩展用户会话的情况下调用asmx webservice
- 24. 调用ASMX服务从JavaScript
- 25. 推出的Web服务(的.asmx)一个IIS 6.0
- 26. Web服务器似乎没有安装FrontPage服务器扩展:visual studio 2012 iis express
- 27. PHP查找扩展没有扩展名
- 28. 没有扩展名的PHP XMLRPC服务器
- 29. IIS中的ASMX Web服务 - 拒绝连接
- 30. 从我的Chrome扩展调用Web服务
尽管此解决方案可以工作,但它仅适用于运行IIS 6或更高版本的系统。 – jercra 2009-03-04 06:47:39
可以将通配符映射添加到IIS 5.x,但步骤不同。 – Brannon 2009-03-04 08:53:41
是的,你可以添加一个通配符映射到IIS 5.x,但是当涉及到Web服务时会出现一个错误,在这个错误中你会得到一个关于不被允许的动词的错误。这个错误在ASP.net留言板上非常明显。 – jercra 2009-03-05 17:19:38