我正在尝试使用一个简单的Spring.NET Web服务使用MVC3但是虽然没有错误,我可以从日志中看到Spring正在部署它,但我无法为我的Web服务提供正确的URL一点都不
我想我已经正确地遵循了示例(Spring.NET附带)。我的不同之处在于我没有对我的服务进行任何AOP编织。据我所知,它应该有用......但不是。
这是我的服务类(非常基础)
public interface IHelloService
{
string SayHello();
}
public class HelloService : IHelloService
{
public String SayHello()
{
return "Hello";
}
}
这是我的配置
<!-- Web services -->
<object id="HelloService" type="Munch.Service.Web.HelloService, Munch.Service"/>
<!-- Exports contact service (weaved or not) as a web service. -->
<object id="HelloWebService" type="Spring.Web.Services.WebServiceExporter, Spring.Web">
<property name="TargetName" value="HelloService"/>
<property name="Namespace" value="http://Munch.Service.Web/HelloService"/>
<property name="Description" value="Hello Web Services"/>
<property name="TypeAttributes">
<list>
<object type="System.Web.Script.Services.ScriptServiceAttribute, System.Web.Extensions"/>
</list>
</property>
</object>
我希望能够以类似http://localhost:8080/Munch/HelloWebService.asmx之类的方式访问我的网络服务,但对于我尝试的任何变体都不会感到高兴。有没有办法找出已部署的Web服务(可能是某些调试页面)?
Spring附带的示例确实有效(!)所以我知道可以在我的机器上运行一个有效的Spring WS,我只是看不出我出错的地方。
答案 0 :(得分:1)
我可以使用spring.net 1.3.2附带的spring.net HelloService
发布您的Spring.Mvc3QuickStart
。
这些是我必须做的事情才能让它发挥作用:
routes.IgnoreRoute
Spring.Web.Services.WebServiceHandlerFactory
添加Spring.Web
,因为bbaia对您的问题发表了评论我怀疑您忘记将所有asmx资源添加到routes.IgnoreRoute
。
步骤一步
从Spring.Net 1.3.2附带的Spring.Mvc3QuickStart示例应用程序开始。
从您的问题中引用包含HelloService
类的项目。
将文件~/Config/services.xml
添加到项目中,其中包含您的服务配置:
<object id="HelloService" type="Munch.Service.Web.HelloService, Munch.Service"/>
<object id="HelloWebService" type="Spring.Web.Services.WebServiceExporter, Spring.Web">
<property name="TargetName" value="HelloService"/>
<property name="Namespace" value="http://Munch.Service.Web/HelloService"/>
<property name="Description" value="Hello Web Services"/>
<property name="TypeAttributes">
<list>
<object type="System.Web.Script.Services.ScriptServiceAttribute, System.Web.Extensions"/>
</list>
</property>
</object>
在Global.asax中,添加
routes.IgnoreRoute("{resource}.asmx/{*pathInfo}");
到RegisterRoutes
。这将告诉asp.net mvc处理程序单独将请求留给asmx资源。
在web.config中,添加以下http处理程序:
<system.web>
<!-- ... -->
<httpHandlers>
<add verb="*" path="*.asmx" type="Spring.Web.Services.WebServiceHandlerFactory, Spring.Web" />
</httpHandlers>
<!-- ... -->
在web.config中,将您的服务配置添加到spring上下文:
<spring>
<context>
<resource uri="file://~/Config/controllers.xml" />
<resource uri="file://~/Config/services.xml" />
</context>
</spring>
从Visual Studio运行应用程序时,您应该能够在http://localhost:12345/HelloWebService.asmx查看服务(用您的dev端口替换12345)。
备注的
我对asp.net-mvc不太熟悉,所以可能有比我建议更好的配置方法。