c# - net - publish mvc project to local iis




CSS ، الصور ، JS لا يتم تحميلها في IIS (11)

أحد الأسباب المحتملة لذلك هو أن التطبيق الخاص بك يتوقع تشغيله على المنفذ 443 (منفذ SSL القياسي) ومنفذ 443 قيد الاستخدام بالفعل. لقد واجهت هذا عدة مرات مع المطورين الذين يحاولون تشغيل التطبيق الخاص بنا أثناء تشغيل Skype على أجهزة الكمبيوتر الخاصة بهم.

بشكل لا يصدق ، سكايب يعمل على المنفذ 443. هذا هو عيب في التصميم الرهيبة في رأيي. إذا رأيت تطبيقك يحاول تشغيله على 444 بدلاً من 443 ، فقم بإيقاف تشغيل Skype وستزول المشكلة.

كانت جميع تطبيقاتي تعمل بشكل جيد ولكن فجأة لا تقوم جميع المواقع تحت IIS بتحميل css والصور والنصوص البرمجية. انها اعادة توجيه لصفحة تسجيل الدخول.

إذا قمت بتسجيل الدخول فإنه يعمل بشكل جيد. على سبيل المثال ، mysite.com/Account/LogOn؟ReturnUrl=٪2fpublic٪2fimages٪2ficons٪2f41.png

على الجهاز المحلي يعمل بشكل جيد دون تسجيل الدخول.


أحد الاقتراحات التي وجدتها مفيدة في الماضي عند تطوير المواقع في بيئة اختبار localhost عند العمل مع نسخة من موقع الإنتاج. تأكد من التعليق على العلامات الأساسية:

  <!--<base href="http://www.example.com/">//-->

إذا حاولت كافة الحلول أعلاه ولا تزال تواجه مشاكل ، فكر في استخدام الطريقة ResolveClientUrl () لـ ASP.NET.

برنامج نصي على سبيل المثال:

بدلا من استخدام

<script src="~/dist/js/app.min.js" ></script>

استخدم الطريقة

<script src="<%= ResolveClientUrl("~/dist/js/app.min.js") %>" ></script>

كان هذا هو الحل الذي نجح من أجل صديق كنت أساعده!


استخدم هذا في قسم التهيئة في ملف web.config الخاص بك:

<location path="images">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
<location path="css">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
<location path="js">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>

حاول إزالة قسم staticContent من web.config الخاص بك.

<system.webServer>
    <staticContent>
        ...
    </staticContent>
</system.webServer>

ربما لديك مصادقة Windows ممكّنة في web.config الخاص بك. على جهاز محلي ، يتم تمرير بيانات اعتماد Windows تلقائيًا وتعمل. في موقع مباشر ، تتم معاملتك كمستخدم مجهول (يمكن أن يتحكم IE في هذا ، لكن لا تقم بتعديل هذا إلا إذا كنت تعرف بالفعل ما تقوم به).

هذا يتسبب في ما يلي:

  • مطلوب منك تسجيل الدخول صراحة.
  • لا يتم تقديم الموارد مثل النصوص البرمجية و CSS على صفحة تسجيل الدخول نظرًا لعدم مصادقتك.

لم ينكسر هذا ، يعمل فقط على النحو المنشود ، ولكن "لإصلاح" هذا:

  • قم بتغيير نوع المصادقة في web.config إذا كنت لا تريد أي تسجيل دخول.
  • و / أو إضافة web.config في الدليل (الأدلة) الذي يحتوي على CSS ، والصور ، والنصوص ، وما إلى ذلك التي تحدد قواعد التفويض.


كان لدي خطأ مشابه ، بدا بلدي حدة التحكم مثل هذا:

كانت مشكلتي هي أنني كنت أدير موقعي في مجلد فرعي لأن الشركة كانت تستخدم نطاقًا كبيرًا واحدًا ولا مجالًا فرعيًا. مثله:

host.com/app1

host.com/app2

بدت شفرتي بهذا الشكل لتضمين نصوص برمجية عملت بشكل جيد على المضيف المحلي ولكن ليس في app1 أو app2:

<link rel="stylesheet" type="text/css" href="/Content/css/font-awesome.min.css" />

أضيفت علامة التلدة ~ إلى src وبعد ذلك عملت كل شيء:

<link rel="stylesheet" type="text/css" href="~/Content/css/font-awesome.min.css" />

شرح ~ مقابل / :

  • / - جذر الموقع
  • ~/ - دليل الجذر للتطبيق

/ سيعود الجذر للموقع ( http://host.com/ ) ،

~/ سيعود الجذر للتطبيق ( http://host.com/app1/ ).


كانت مسألة إذن النوافذ نقل المجلد هذا هو أنه يرث أذونات خاطئة. عندما انتقل إلى المجلد wwwroot وأضيف إذن لمستخدم iis فإنه يبدأ العمل بشكل جيد.


لإصلاح هذا:

انتقل إلى خدمة معلومات الإنترنت (IIS)

انقر فوق موقع الويب الذي تحاول تحميل الصورة عليه

ضمن قسم IIS ، افتح قائمة المصادقة وتمكين مصادقة Windows أيضًا.


واجهت نفس المشكلة ، ولن تقوم صفحة لم تتم مصادقتها بتحميل CSS و JS و Images عندما قمت بتثبيت تطبيق الويب الخاص بي في ASP.Net 4.5 في IIS 8.5 على Windows Server 2012 R2.

  1. كان لدي دور محتوى ثابت مثبت
  2. كان تطبيق الويب الخاص بي موجودًا في المجلد wwwroot لـ IIS وكانت كافة أذونات مجلد Windows سليمة (الأذونات الافتراضية ، بما في ذلك IIS_IUSRS)
  3. أضفت تفويضًا لجميع المجلدات التي تحتوي على CSS و JS والصور.
  4. كان لدي مجلد تطبيقات الويب على مشاركة النوافذ ، لذلك أزلت المشاركة كما اقترحها @ imran-rashid

ومع ذلك ، يبدو أن لا شيء يحل المشكلة. ثم في النهاية حاولت إعداد هوية المستخدم المجهول إلى App Pool Identity وبدأت العمل.

لقد خبطت رأسي لبضع ساعات ، ونأمل أن هذا الرد سيوفر عذاب لمطوري زملائي.

أود حقا أن أعرف لماذا يعمل هذا. أي أفكار؟





iis