سؤال

أحاول إنشاء خدمة واجهة برمجة تطبيقات ويب مستضافة ذاتيًا.لقد اتبعت البرنامج التعليمي وهو يعمل بشكل جيد على جهاز الكمبيوتر المحلي الخاص بي.

يستجيب المضيف المحلي/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/";

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top