আমি যদি ওউইন স্টার্টআপ সি ক্লাস ব্যবহার করে সেখানে সমস্ত কনফিগারেশন সরিয়ে রাখি তবে কী আমার কাছে গ্লোবাল.এক্সএক্স.সি.এস ফাইল দরকার আছে?


197

আসুন উদাহরণস্বরূপ একটি স্বতন্ত্র অ্যাকাউন্টগুলির টেমপ্লেট সহ এমভিসি থেকে তৈরি একটি নতুন এএসপি.নেট এমভিসি 5 অ্যাপ্লিকেশনটিতে উদাহরণস্বরূপ বলা যাক, আমি যদি Global.asax.csক্লাসটি মুছে ফেলি এবং এর কনফিগারেশন কোডটি Startup.cs Configuration()অনুসরণ করে অনুসরণ করি তবে ডাউনসাইডগুলি কী?

public partial class Startup
{
     public void Configuration(IAppBuilder app)
     {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        ConfigureAuth(app);
    }
}

আমার জন্য উত্সাহটি হ'ল এএসপি.এনইটি 4 অ্যাপ্লিকেশনকে এএসপি.নেট 5-তে আপগ্রেড করার সময় এবং এখন স্টার্টআপ.সি ক্লাসে কনফিগার করা আবশ্যক টুকরা ব্যবহার করার সময়, আমি দুটি ভিন্ন শ্রেণিতে নির্ভরশীল ইনজেকশন এবং অন্যান্য কনফিগারেশনটি করছি না যা সম্পর্কিত বলে মনে হচ্ছে শুরু করার জন্য, এবং কনফিগারেশন।


AreaRegistration.RegisterAllAreas();আমার জন্য একটি ত্রুটি ঘটেছে কারণ এই পদ্ধতিটি কেবল প্রারম্ভিক সময়ে এটি ব্যবহারের অনুমতি দেওয়া হয় না Application_Start। যাইহোক, আমার অ্যাপ্লিকেশনটি একটি এপিআই এবং এই পদ্ধতিটি কেবলমাত্র এমভিসি অ্যাপ্লিকেশনগুলির জন্যই কার্যকর: স্ট্যাকওভারফ্লো
হার্ভে

উত্তর:


171

স্টার্টআপ. কনফিগারেশনটি অ্যাপ্লিকেশন_স্টার্টের তুলনায় কিছুটা পরে ডাকা হয়, তবে আমি মনে করি না বেশিরভাগ ক্ষেত্রেই তফাতটি খুব বেশি গুরুত্ব পাবে।

আমি বিশ্বাস করি যে আমরা গ্লোবাল.এক্স্যাক্সে অন্যান্য কোড রেখেছি তার প্রধান কারণগুলি:

  1. এমভিসির পূর্ববর্তী সংস্করণগুলির সাথে সামঞ্জস্যতা। (এইখানে বর্তমানে প্রত্যেকেই এই কোডটি সন্ধান করার প্রত্যাশা করে))
  2. অন্যান্য ইভেন্ট হ্যান্ডলার যুক্ত করার ক্ষমতা। গ্লোবাল.এক্সএক্সে, আপনি অন্যান্য পদ্ধতি যেমন সেশন_সেটার্ট এবং অ্যাপ্লিকেশন_এররর পরিচালনা করতে পারেন।
  3. বিভিন্ন প্রমাণীকরণের দৃশ্যে সঠিকতা। আপনার বিন ডিরেক্টরিতে মাইক্রোসফ্ট.অউইন.হোস্ট.সিস্টেমওয়েব.ডিল থাকে তবেই স্টার্টআপ.কনফিগারেশন পদ্ধতিটি বলা হয়। আপনি যদি এই ডিএলএলটি সরিয়ে ফেলেন তবে এটি নিঃশব্দে স্টার্টআপ.কনফিগারেশন কল করা বন্ধ করবে, যা বুঝতে অসুবিধা হতে পারে।

আমি মনে করি তৃতীয় কারণটি সবচেয়ে গুরুত্বপূর্ণ যেটি আমরা ডিফল্টরূপে এই পদ্ধতিকে গ্রহণ করি নি, যেহেতু কিছু পরিস্থিতিতে এই ডিএলএল থাকা অন্তর্ভুক্ত নয়, এবং যেখানে সম্পর্কযুক্ত কোডটি অকার্যকর না করে প্রমাণীকরণের পদ্ধতিগুলি পরিবর্তন করতে সক্ষম হবেন তা ভালো (যেমন: রুট রেজিস্ট্রেশন) স্থাপন করা হয়েছে।

তবে যদি এই দৃশ্যের কোনওটি আপনার দৃশ্যে প্রয়োগ না হয় তবে আমি মনে করি আপনি এই পদ্ধতিটি ব্যবহার করে ভাল হয়ে যাবেন।


19
স্টার্টআপ. কনফিগারেশন () ব্যবহারের আরেকটি সুবিধা হ'ল আপনি কেবলমাত্র 1 টি লাইন কোডের সাথে ওওন স্ব-হোস্ট ব্যবহার করে সহজেই আপনার ওয়েবসাইটটি হোস্ট করতে পারেন: ওয়েব অ্যাপ.স্টার্ট <স্টার্টআপ> (" লোকালহস্ট : 3001 /" ) asp.net/web-api/ সংক্ষিপ্ত বিবরণ / হোস্টিং-এ্যাসনেট-ওয়েব-এপি /… এটি বিশেষত ইন্টিগ্রেশন টেস্ট লেখার পক্ষে সহজ
বরিস লিপসিটজ

16
"নিঃশব্দে স্টার্টআপ কল করা বন্ধ করুন" কনফিগারেশন "পার্শ্ব-প্রতিক্রিয়া রোধ করার জন্য, আপনি ওয়েব কনফিগ অ্যাপস সেটিংস কী" ওউইন: অ্যাপস্টার্টআপ "যুক্ত করতে পারেন যা নাম কনভেনশনের উপর নির্ভর না করে ওউইউন স্টার্টআপের জন্য প্রকারটি স্পষ্টভাবে নির্দিষ্ট করে দেয় খুঁজে দেখো. এটি বিভিন্ন পরিবেশের জন্য বিভিন্ন কনফিগারেশন সমর্থন করার জন্যও কার্যকর (দেব / পরীক্ষা / প্রোড)
থিয়াগো সিলভা

2
# 3 এর জন্য +1। আমি একটি ওয়েব WebApi.Owinএপিআইতে একটি পাতলা শুরু করতে চেয়েছিলাম তাই আমি একটি খালি টেম্পলেট এএসপি.এনইটি ওয়েবসাইট তৈরি করে নুগেট প্যাকেজ যুক্ত করেছি। আমি ভুলভাবে প্রত্যাশা করেছি যে আইআইএস-এ চালানোর জন্য সবকিছু অন্তর্ভুক্ত করবে ency কেন আমি ভাবলাম না যেহেতু আমি ওউইন স্টার্টআপটি আইআইএস নির্ভরতাটিকে প্রথম স্থানে সরিয়ে দিতে চেয়েছিলাম।
16

@ ডিমেটসন আপনার সর্বশেষ বিবৃতিটি দিয়ে আপনি মূলত বোঝাচ্ছেন যে স্টার্টআপ ক্লাসটি কেবল প্রমাণীকরণের জন্য বোঝানো হয়েছে?
স্যাম

@ স্যাম, অন্যান্য কনফিগারেশনের জন্য ফিল্টার এবং রুটের মতো কোনও প্রারম্ভিককরণ ব্যবহৃত হয় না, যেমন প্রশ্নটি দেখায়।
ডাম্যাটসন

33

সম্পূর্ণ পদক্ষেপের জন্য যারা সন্ধান করছেন তাদের জন্য: আপনি যদি OWIN ভিত্তিক, আইআইএস হোস্টেড ওয়েব এপিআই তৈরি করতে চাইছেন তবে এই পদক্ষেপগুলি আপনাকে সেখানে পৌঁছে দিতে হবে:

  1. File -> New -> Project
  2. সংলাপে, Installed -> templates -> Other Project types -> Visual Studio Solutions -> Blank Solution targeting .NET 4.6
  3. সমাধানটিতে ডান ক্লিক করুন, যুক্ত করুন Project -> Web -> ASP.NET Web Application(টার্গেটিং। নেট 4.6)

    ৩.১ এখন এএসপি.নেট 4.5 টেম্পলেটগুলিতে, খালিটি টেমপ্লেট হিসাবে চয়ন করুন

    ৩.২ এটি দুটি নিউট প্যাকেজ সহ একটি ফাঁকা সমাধান তৈরি করে:

    Microsoft.CodeDom.Providers.DotNetCompilerPlatform v 1.0.0
    Microsoft.Net.Compilers v 1.0.0
  4. নিম্নলিখিত প্যাকেজ ইনস্টল করুন:

    Install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.2.3
    Install-Package Microsoft.AspNet.WebApi -Version 5.2.3
    Install-Package WebApiContrib.Formatting.Razor 2.3.0.0

ওউইনের জন্য:

Install-Package Microsoft.Owin.Host.SystemWeb 
Install-Package Microsoft.AspNet.WebApi.OwinSelfHost    

তারপরে কনফিগারেশন পদ্ধতিতে স্টার্টআপ.স যুক্ত করুন:

[assembly:OwinStartup(typeof(namespace.Startup))]
public class Startup
    {
        /// <summary> Configurations the specified application. </summary>
        /// <param name="app">The application.</param>
        public static void Configuration(IAppBuilder app)
        {
            var httpConfiguration = CreateHttpConfiguration();

            app
                .UseWebApi(httpConfiguration);
        }

        /// <summary> Creates the HTTP configuration. </summary>
        /// <returns> An <see cref="HttpConfiguration"/> to bootstrap the hosted API </returns>
        public static HttpConfiguration CreateHttpConfiguration()
        {
            var httpConfiguration = new HttpConfiguration();
            httpConfiguration.MapHttpAttributeRoutes();

            return httpConfiguration;
        }
}

এখন উত্তরাধিকার সূত্রে প্রাপ্ত একটি শ্রেণি যুক্ত করুন ApiController, RoutePrefixএট্রিবিউট এবং এ্যাকশন পদ্ধতির মাধ্যমে এটি বর্ননা করুন Route + HttpGet/PutPost(আপনার পরে থাকা এইচটিটিপি ক্রিয়াটি উপস্থাপন করছেন) এবং আপনার যেতে ভাল হওয়া উচিত


1
আপনাকে ধন্যবাদ @ ডটনেটগুয়ে !!! আমি গ্লোবাল.এক্স্যাক্সকে সম্পূর্ণরূপে মুক্তি দেওয়ার চেষ্টা করছি কিন্তু করতে পারিনি। অবশেষে আপনার পদক্ষেপগুলি অনুসরণ করে, এটি আমার পক্ষে কাজ করেছিল। আমার ক্ষেত্রে অনুপস্থিত অংশটি হ'ল এটি Install-Package Microsoft.AspNet.WebApi.OwinSelfHostআমার রেফারির সাথে একবার যোগ করার পরে আমি Global.asax মুছতে সক্ষম হয়েছি।
ইয়ার্ডিম

2
@ আইয়ার্ডিম আমি মনে করি গ্লোবাল.এক্স্যাক্স ফাইলের সাথে ওউইনসেলফহস্টের তেমন কিছু করার নেই, এটি কেবল আপনাকে উইন্ডোজ পরিষেবাতে আইআইএসের বাইরে আপনার অ্যাপ্লিকেশনটি হোস্ট করার বিকল্প দেয়
আলেকজান্ডার ডার্ক

@ ডটনেটগুই Install-Package WebApiContrib.Formatting.Razor 2.3.0.0একটি ইনস্টল-প্যাকেজ পাওয়া যায়নি ত্রুটি দেখায়। এই প্যাকেজের সাথে কাজ করার ইনস্টল বুঝেছি Install-Package WebApiContrib.Formatting.Razor 2.3.0, তাই last.0 ছাড়া
Dairo

1
@ ডটনেগগুয়ে [assembly:OwinStartup(typeof(namespace.Startup))]অংশটি অবশ্যই নামফলকের অংশের উপরে থাকতে হবে অন্যথায় এটি নিম্নলিখিত ত্রুটিটি দেয়Assembly and module attributes must precede all other elements defined in a file except using clauses and extern alias declarations.
ডায়রো

16

ওয়েব অ্যাপ্লিকেশনটি কীভাবে শুরু করা / হোস্টিং করা যায় তা পুরোপুরি বিভ্রান্ত হওয়ার কারণে এটি আমার বোঝার। একটি ছোট সংক্ষিপ্তসার:

1. ক্লাসিক এএসপি.এনইটি: বাধ্যতামূলক আইআইএস পাইপলাইনের শেষ ধাপে চালানোর জন্য কেবল অ্যাপ্লিকেশন কোডটি লিখুন

২.উইউইন সহ এএসপি.নেট: একটি নেট নেট সার্ভারটি কনফিগার করুন এবং আপনার অ্যাপ্লিকেশন কোডটি লিখুন। আর আইআইএস-এ সরাসরি যুক্ত নয়, সুতরাং আপনি এটি আর ব্যবহার করতে বাধ্য হবেন না।

৩. এএসপি.নেট কোর: আপনার অ্যাপ্লিকেশন কোডটি ব্যবহার করতে এবং লিখতে হোস্ট এবং ওয়েব সার্ভার উভয়কেই কনফিগার করুন। আপনি পুরো .NET ফ্রেমওয়ার্কের পরিবর্তে .NET কোর লক্ষ্য করে নিলে কোনও নেট নেট সার্ভার ব্যবহার করা বাধ্যতামূলক নয়।


অ্যাপ্লিকেশন শুরু করার জন্য এটি কীভাবে কাজ করে এবং কোন ক্লাস ব্যবহার করা হয় তার বিশদটি সম্পর্কে আমি আরও কিছুটা এগিয়ে যাব:

ক্লাসিক এএসপি.এনইটি

ক্লাসিক এএসপি.এনইটি অ্যাপ্লিকেশনগুলির Global.asaxএন্ট্রি পয়েন্ট হিসাবে ফাইল রয়েছে। এই অ্যাপ্লিকেশনগুলি কেবল আইআইএসে চালানো যেতে পারে এবং আপনার কোড আইআইএস পাইপলাইন শেষে কার্যকর করা হবে (সুতরাং আপনার কোড এমনকি চালানোর আগে আইআইএস কর্স, প্রমাণীকরণের জন্য দায়ী)। আইআইএস 7 যেহেতু আপনি আপনার অ্যাপ্লিকেশনটি সংহত মোডে চালাতে পারেন যা এএসপি.এনইটি রানটাইমকে আইআইএসে সংহত করে। এই কনফিগার কার্যকারিতা আপনার কোড যা সম্ভব নয় সক্ষম সামনে যেমন (অথবা শুধুমাত্র আইআইএস নিজেই) URL rewriting মধ্যে Application_Startআপনার ইভেন্ট Global.asaxফাইল বা নতুন ব্যবহার <system.webserver>আপনার অধ্যায় web.configফাইল।

OWIN সহ এএসপি.নেট

প্রথমত ওউইন একটি লাইব্রেরি নয় তবে কীভাবে নেট নেট সার্ভার (উদাহরণস্বরূপ আইআইএস) ওয়েব অ্যাপ্লিকেশনগুলির সাথে ইন্টারেক্ট করে specific মাইক্রোসফ্ট নিজেরাই OWIN এর একটি প্রকল্প বাস্তবায়ন করে যার নাম ক্যাটানা (বিভিন্ন নুগেট প্যাকেজের মাধ্যমে বিতরণ করা হয়)। এই বাস্তবায়নটি IAppBuilderআপনি কোনও Startupশ্রেণিতে মুখোমুখি ইন্টারফেস এবং মাইক্রোসফ্ট দ্বারা সরবরাহিত কিছু ওউইন মিডলওয়্যার উপাদান (ওএমসি এর) সরবরাহ করে। ব্যবহারIAppBuilderআপনি মূলত আইআইএস পাইপলাইনে আবদ্ধ হওয়ার পরিবর্তে ওয়েবসারভারের জন্য পাইপলাইন তৈরি করার জন্য প্লাগ-ও-প্লেতে মিডলওয়্যার রচনা করুন (উপরের পয়েন্ট হিসাবে কেবলমাত্র ASP.NET পাইপলাইন ছাড়াও) তবে এখন আপনি ব্যবহার করেন সিওআরএসের জন্য মিডলওয়্যার উপাদান, প্রমাণীকরণের জন্য একটি মিডওয়্যার উপাদান ...)। এ কারণে আপনার অ্যাপ্লিকেশনটি আর আইআইএস-তে বিশেষভাবে মিলিত হয়নি এবং আপনি এটি কোনও। নেট ওয়েবসার্ভারে চালাতে পারেন, উদাহরণস্বরূপ:

  • OwinHost প্যাকেজ স্ব-হোস্ট একটি কাতানা ওয়েবসার্ভার সঙ্গে আপনার আবেদন ব্যবহার করা যাবে।
  • Microsoft.Owin.Host.SystemWeb প্যাকেজ সঠিক জীবদ্দশায় ঘটনা অভ্যন্তরীণভাবে আপনার মিডলওয়্যার সাবস্ক্রাইব করে, ইন্টিগ্রেটেড মোডে IIS7 + + আপনার OWIN আবেদন হোস্ট করার জন্য ব্যবহার করা হয়।

যে জিনিসটি সমস্ত কিছুকে বিভ্রান্ত করে তোলে তা Global.asaxহ'ল এখনও ওউইন Startupক্লাসের সাথে একত্রে সমর্থিত , যখন তারা উভয়ই একই রকম কাজ করতে পারে। উদাহরণস্বরূপ আপনি Global.asaxওআউআইএন মিডলওয়্যার ব্যবহার করে সিআরএস বাস্তবায়ন করতে পারেন যা সত্যই বিভ্রান্তিকর হয়ে পড়ে ।

আমার থাম্বের নিয়মটি হ'ল যখনই আমাকে OWIN যুক্ত করা দরকার তখন Global.asaxব্যবহারের পক্ষে পুরোপুরিভাবে ফাইলটি সরিয়ে ফেলা Startup

এএসপি.নেট কোর

এএসপি.নেট কোর হ'ল পরবর্তী বিবর্তন এবং এখন আপনি। নেট নেট বা সম্পূর্ণ। নেট ফ্রেমওয়ার্কটিকে লক্ষ্য করতে পারেন। আপনি যখন নেট নেট লক্ষ্যবস্তু করেন আপনি .NET স্ট্যান্ডার্ড সমর্থন করে এমন কোনও হোস্টে আপনার অ্যাপ্লিকেশন চালাতে পারেন। এর অর্থ আপনি আর কোনও নেট নেটসার্ভারের মতো সীমাবদ্ধ নন (পূর্ববর্তী পয়েন্টের মতো), তবে আপনার অ্যাপ্লিকেশন ডকার পাত্রে, একটি লিনাক্স ওয়েবসার্ভার, আইআইএসে হোস্ট করতে পারেন ...

একটি এএসপি.নেট কোর ওয়েব অ্যাপ্লিকেশনটির প্রবেশ Program.csফাইলটি সেখানে আপনি আপনার হোস্টকে কনফিগার করেছেন এবং আবার আপনার Startupক্লাসটি নির্দিষ্ট করুন যেখানে আপনি নিজের পাইপলাইনটি কনফিগার করেন। OWIN ব্যবহার ( IAppBuilder.UseOwinএক্সটেনশন পদ্ধতি ব্যবহার করে ) isচ্ছিক, তবে সম্পূর্ণ সমর্থনযোগ্য

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.