我想要完成的任务:
我有一个Windows服务,可以根据某些数据库数据创建电子邮件。 (不是问题)
我希望服务能够创建一次性使用链接,沿http://thisserver:80/someGuid/whicheverURL
行
并听取这个网址,直到有人按下链接(我想这可能是某种休息'发布'的事情)
我需要什么:
请记住
我不需要显示任何数据,只需检查用户是否实际点击了链接然后运行了一些内部流程
一如既往地提前谢谢:)
解决方案 我发现是一个合适的解决方案 - >基于明确的答案&基于http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api
我是自动托管WindowsService(无IIS)中的“网站”
主:
var baseAddress = new Uri("http://localhost:8080/");
var guidList = new string[]{
"89ac3d67-81fc-4294-bacc-72a97469cc95",
"99ac3d67-81fc-4294-bacc-72a97469cc95",
"09ac3d67-81fc-4294-bacc-72a97469cc95",
};
foreach (var guid in guidList)
{
Console.WriteLine(guid);
var config = new HttpSelfHostConfiguration(baseAddress + guid);
config.Routes.MapHttpRoute("default", "{controller}/{id}", new { controller = new JobController(), id = RouteParameter.Optional });
var server = new HttpSelfHostServer(config);
server.OpenAsync().Wait();
}
Console.WriteLine("Server is opened");
Console.ReadKey();
控制器
public HttpResponseMessage Get()
{
var request = ControllerContext.RequestContext.Url.Request.RequestUri;
Uri UrlGuid = request.RequestUri;
Console.WriteLine("{0} has been accessed", UrlGuid.Segments[1]);
return new HttpResponseMessage
{
Content = new StringContent("Some Content Here")
};
}
答案 0 :(得分:1)
使用Web API或MVC:
UNIQUEIDENTIFIER
(C#GUID)将用于标识记录。http://servername:80/controller?id=<the guid>
但是使用自定义路由,您可以按照URI中GUID的原始方式创建URI MVC 5.0中的控制器示例
public class TestController: Controller
{
public ActionResult ProcessResponse(Guid id)
{
//
//lookup & process the record using the id...
//
return View("ThankYou"); // <-- will display the "ThankYou.cshtml" view
}
}