我访问了一个现有的 asp.net 网站(不属于我),他们要求添加一些 Web 服务。每个 ServiceStack.net 示例都用于 Web 应用程序而不是网站。
有人做过吗?我用谷歌搜索了很多,没有找到任何东西。
我知道 web.config 部分完全不同,但我正在寻找一些有用的东西。
谢谢。
我访问了一个现有的 asp.net 网站(不属于我),他们要求添加一些 Web 服务。每个 ServiceStack.net 示例都用于 Web 应用程序而不是网站。
有人做过吗?我用谷歌搜索了很多,没有找到任何东西。
我知道 web.config 部分完全不同,但我正在寻找一些有用的东西。
谢谢。
Global.asax 文件:
<%@ Application Language="C#" %>
<%@ Import Namespace="ServiceStack.ServiceHost" %>
<%@ Import Namespace="ServiceStack.ServiceInterface" %>
<script runat="server">
[Route("/hello")]
[Route("/hello/{Name}")]
public class Hello
{
public string Name { get; set; }
}
public class HelloResponse
{
public string Result { get; set; }
}
public class HelloService : Service
{
public object Any(Hello request)
{
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
public class HelloAppHost : ServiceStack.WebHost.Endpoints.AppHostBase
{
//Tell Service Stack the name of your application and where to find your web services
public HelloAppHost() : base("Russ", typeof(HelloService).Assembly) { }
public override void Configure(Funq.Container container)
{
//register any dependencies your services use, e.g:
//container.Register<ICacheClient>(new MemoryCacheClient());
}
}
void Application_Start(object sender, EventArgs e)
{
new HelloAppHost().Init();
}
void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown
}
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
}
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
}
void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is set to StateServer
// or SQLServer, the event is not raised.
}
</script>
至于 web.config 文件,我发现它与 web 应用程序示例相同。只需找到标签的相应部分,然后输入它们所属的两行:
<system.web>
<httpHandlers>
<add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
</httpHandlers>
</system.web>
<system.webServer>
<handlers>
<add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
对于参考,我添加了 nuget 包并进行了 cmd 行调用:install-package ServiceStack。但是你的 bin 应该有这些文件:
我刚刚尝试了一个新的 ASP.NET 网站,它确实有效。元数据页面显示不正确,但所有端点都正常工作。我想只要稍加修改,您就可以使元数据页面正常工作。
我通过 nuget 安装了 ServiceStack,并且由于网站没有项目文件,因此引用的显示方式会有所不同。所有 dll 将直接加载到 bin 文件夹中。
然后添加所需的最低 DTO、服务和 AppHost 代码,它就会工作。