我有一个由 Winform C# 构建的应用程序。在我的应用程序中有自托管 html 文件和 Web API 的代码,但自托管 Web API 需要管理员权限。因此,我在我的应用程序上以管理员身份运行,同时在浏览器中访问 html 页面。未加载 html 页面,我在浏览器中只收到一条错误消息。
{"Message":"No HTTP resource was found that matches the request URI 'http://192.168.100.126:44811/'."}
我不明白为什么以管理员身份运行时没有加载它
这里代码到 selfhost html 文件和 web api
void WebHost(string url) {
try {
WebApp.Start(url, builder = >builder.UseFileServer(enableDirectoryBrowsing: true));
var config = new HttpSelfHostConfiguration(url);
config.Routes.MapHttpRoute(
name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new {
id = RouteParameter.Optional
});
config.Formatters.Remove(config.Formatters.XmlFormatter);
var server = new HttpSelfHostServer(config);
var task = server.OpenAsync();
task.Wait();
Console.WriteLine("Server is up and running");
Console.WriteLine("Listening at " + url);
} catch(Exception w) {
MessageBox.Show(w.ToString());
}
}
编辑1:
我找到了另一种自托管 Web API 的方法。正在使用 webapp.start 方法。与 selfhost 的 html 文件相同。但是当我尝试开始时。我有冲突前缀
System.Reflection.TargetInvocationException: 'Exception has been thrown by the target of an invocation.'
HttpListenerException: Failed to listen on prefix 'http://192.168.100.126:44811/' because it conflicts with an existing registration on the machine.
和这里的代码开始
var url = "http://192.168.100.126:44811";
WebApp.Start(url, builder => builder.UseFileServer(enableDirectoryBrowsing: true));
WebApp.Start<WebAPI>(url: url);
所以问题是如何以相同的方法使其自托管(webApp.Start)
编辑2:
我尝试以不同的端口和相同的方法启动 html 文件和 Web API。现在工作没有冲突。
但它可以在相同的 ip 和端口中运行而不会发生冲突吗?
因为在 Jquery 中使用 Ajax 请求 Web API 时出现 CORS 错误