【发布时间】:2015-03-31 15:38:00
【问题描述】:
我正在尝试创建一个像 Web 服务器一样的小程序并接受 url 参数。我找到了这个示例项目:https://codehosting.net/blog/BlogEngine/post/Simple-C-Web-Server.aspx
有什么方法可以让它接收我的 url 参数?有没有其他类似的示例项目具有此功能?
【问题讨论】:
标签: c# asp.net web-services url-parameters
我正在尝试创建一个像 Web 服务器一样的小程序并接受 url 参数。我找到了这个示例项目:https://codehosting.net/blog/BlogEngine/post/Simple-C-Web-Server.aspx
有什么方法可以让它接收我的 url 参数?有没有其他类似的示例项目具有此功能?
【问题讨论】:
标签: c# asp.net web-services url-parameters
你应该看看 OWIN/Katana。 根据您的问题 - 并且 OWIN 能够在任何进程中托管 - 这可能非常适合并且是当前的方式:
http://www.asp.net/aspnet/overview/owin-and-katana/getting-started-with-owin-and-katana
您会发现有关此主题的大量示例。关于参数的问题可以参考this article。
根据第一个链接,您可以执行以下操作:
public class Startup1
{
public void Configuration(IAppBuilder app)
{
app.Run(context =>
{
var value = context.Request.Query.Get("someKey");
if (value == "foo")
{
// do something
}
context.Response.ContentType = "text/plain";
return context.Response.WriteAsync("Hello, world.");
});
}
}
请求可能如下所示:http://someServer:80/?someKey=foo
【讨论】:
请阅读这篇文章: Building A Simple File Server With OWIN and Katana
class Program
{
static void Main(string[] args)
{
var url = "http://localhost:8080";
WebApp.Start(url, builder => builder.UseFileServer(enableDirectoryBrowsing:true));
Console.WriteLine("Listening at " + url);
Console.ReadLine();
}
}
【讨论】:
根据您的项目示例,尝试输入方法 SendRequest,如下所示:
string name = request.QueryString.Get("name");
switch (name){
case "a":
return string.Format("<HTML><BODY>My web page a.<br>{0}</BODY></HTML>", DateTime.Now);
break;
case "b":
return string.Format("<HTML><BODY>My web page b.<br>{0}</BODY></HTML>", DateTime.Now);
break;
default:
return string.Format("<HTML><BODY>My web page .<br>{0}</BODY></HTML>", DateTime.Now);
break;
}
【讨论】: