我已经编写了一个.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. 没有.asmx扩展名的Web服务
- 2. 调用C#ASMX Web服务
- 3. Silverlight4调用ASMX Web服务
- 4. 从另一个.asmx Web服务调用.asmx Web服务
- 5. PowerShell Web服务(管理oData IIS扩展)?
- 6. 从WCF服务调用asmx Web服务
- 7. 托管asmx web服务在.net 2.0 clr没有iis
- 8. 从WCF服务提供JSON服务在IIS中没有扩展
- 9. 调试asmx web服务
- 10. 调用Web服务的.asmx使用AJAX
- 11. Web服务.asmx没有正确编译
- 12. ASMX Web服务 - 没有获得参考
- 13. ASMX Web服务
- 14. 使用$ .get调用Web服务.asmx jquery
- 15. 使用jQuery调用asmx web服务
- 16. IIS-服务无扩展名的PHP文件,有或没有斜线
- 17. 从jQuery调用ASP.NET ASMX Web服务
- 18. Windows Phone 7调用ASMX Web服务
- 19. 从ASMX Web服务调用方法-error-
- 20. 调用ASMX Web服务方法
- 21. 从Javascript调用ASMX Web服务
- 22. 从Web服务URL中删除.asmx扩展
- 23. IIS文件没有扩展
- 24. 为ASMX Web服务
- 25. ASMX Web服务 - SoapHttpClientProtocol.InvokeAsync
- 26. ASP.NET ASMX Web服务
- 27. Web服务ASMX - WCF
- 28. Asp.net ASMX Web服务
- 29. 从.ASMX Web服务
- 30. ASMX - 未在IIS上调用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