مشكلات اسم المضيف المستضاف ذاتيًا في WEB API 2
-
21-12-2019 - |
سؤال
أحاول إنشاء خدمة واجهة برمجة تطبيقات ويب مستضافة ذاتيًا.لقد اتبعت البرنامج التعليمي وهو يعمل بشكل جيد على جهاز الكمبيوتر المحلي الخاص بي.
يستجيب المضيف المحلي/api/values بشكل جيد مع JSON المتوقع.
الآن، لدي خادم مرتبط بـ DNS "myserver.mycompany.com".عندما أبدأ خدمة WebApi 2 الخاصة بي على هذا الخادم وأحاول الاتصال بـ myserver.mycompany.com/api/values، تظهر لي رسالة خطأ 404 لم يتم العثور على الصفحة.
إذا قمت بالتصفح محليًا على هذا الخادم واتصلت بعنوان URL للمضيف المحلي/api/values، فسيعمل بشكل جيد.
إليك رمز فئة بدء التشغيل:
using Owin;
using System.Web.Http;
namespace SelfHostedWebApi2
{
public class Startup
{
// This code configures Web API. The Startup class is specified as a type
// parameter in the WebApp.Start method.
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
}
}
}
وهنا كيف أبدأ الخادم:
using Microsoft.Owin.Hosting;
using System;
using System.Net.Http;
namespace SelfHostedWebApi2
{
public class Program
{
static void Main()
{
string baseAddress = "http://localhost:80/";
// Start OWIN host
try
{
WebApp.Start<Startup>(new StartOptions(url: baseAddress));
HttpClient client = new HttpClient();
var response = client.GetAsync(baseAddress + "api/values").Result;
Console.WriteLine(response);
Console.WriteLine(response.Content.ReadAsStringAsync().Result);
}
catch (Exception ee)
{
Console.WriteLine("Erreur : " + ee.ToString());
}
Console.ReadLine();
}
}
}
شكرا لك على مساعدتك
المحلول
يجب عليك تغيير عنوانك الأساسي بحيث تتطابق نقطة النهاية الخاصة به مع اسم المضيف الخاص بك أو يمكنك استخدام WeakWildcard *
لمطابقة جميع أسماء المضيفين الممكنة.
هذا يجب أن يعمل: string baseAddress = "http://*:80/";