2009-05-27 20 views
13

सचमुच हर दूसरी बार जब मैं एक बड़ी बदसूरत वेब साइट प्रोजेक्ट चलाता हूं, तो मुझे एक अनधिकृत एक्सेस अपवाद मिलता है, एक डीएलएल को इंगित करने वाले संदेश के साथ, उदाहरण के लिए Temporary ASP.NET Files\ctheweb\0d76d363\4695c81f\App_Web_vi6bbbpy.dll' is denied. मैं फिर प्रोजेक्ट को रोकता हूं और पुनरारंभ करता हूं, और यह ठीक चलता है। मैं कुछ परीक्षण करता हूं, डीबगिंग, फिक्सिंग, इसे फिर से चलाता हूं, और फिर त्रुटि प्राप्त करता हूं।अस्थायी एएसपी.NET फ़ाइलों को अस्वीकार कर दिया गया

मैं उस निर्देशिका को साफ़ करने के लिए प्री-बिल्ड कमांड जोड़ने के इच्छुक हूं, लेकिन कम से कम शुरुआत में, मैं हमेशा हथौड़ा के अलावा किसी अन्य चीज़ के साथ किसी समस्या को हल करना पसंद करता हूं।

+0

मैं यह त्रुटि इस सप्ताह के साथ-साथ हो रही किया गया है:

संदर्भ के लिए, स्टैकट्रेस है। हालांकि, यह केवल 64-बिट मशीन पर 32-बिट पर मेरे ऐप पूल को स्विच करने के बाद ही शुरू हुआ। क्या यह आपका मामला भी है? –

उत्तर

10

जब आप एएसपीएक्स पृष्ठों को लगातार संशोधित करते हैं तो विकास के दौरान यह बहुत कुछ होता है, एएसपी.नेट संकलन करने की कोशिश कर रहा है और वीएस संकलन करने की कोशिश कर रहा है और एएसपी.नेट फाइलों को निष्पादित करने का प्रयास कर रहा है। इसके अलावा, जब भी आप आईआईएस रीसेट करते हैं तो लॉक दूर हो जाता है।

iisreset /stop 
del "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\*.*" /Q /F /S 
del “C:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\*.*” /Q /F /S 
iisreset /start 

यदि यह उत्पादन पर होता है तो यह आपको web.config में जोड़ें।

<compilation tempDirectory = “C:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\Other\” /> 

(ओर करने के लिए स्क्रॉल करें, कुंजी, अग्रिम में सब कुछ पहले से संकलित करने के लिए प्रयास करने के लिए एक तैनाती परियोजना का उपयोग डिफ़ॉल्ट की तुलना में कुछ \ अन्य \ फ़ोल्डर को चुना जाना है।

और अंत में। कोई संकलन अस्थायी फ़ोल्डर में चीजों को बदलने के लिए कोई प्रयास नहीं का मतलब है

या आप ओएस निदान कोशिश करते हैं और क्या प्रक्रिया है कि फाइल पर एक ताला है पता लगाना और उस प्रक्रिया को मारने के लिए जब आसान समाधान मौजूद प्रयास करें। लायक नहीं प्रयास कर सकते हैं।

+1

कृपया कोई बता सकता है कि इस पोस्ट को क्यों वोट दिया गया है? योगदान के बिना बस नीचे मतदान मत रचनात्मक और बस कठोर नहीं है। – ProfK

+0

मैं यादृच्छिक डाउन वोटिंग की रक्षा करने वाला नहीं हूं, लेकिन आपके प्रश्न में कहा गया है कि आप एक हथौड़ा उपयोगकर्ता नहीं बनाना चाहते थे और यह एक स्लेज हथौड़ा है जिसे मैंने आपको दिया था। क्योंकि यह एक विकास बॉक्स है और लिपि तेजी से चलती है (सभी के सबसे खराब हथौड़ा के विपरीत, एक रीबूट), यह मेरे लिए उपयुक्त लग रहा था। – MatthewMartin

+1

यह एक अच्छा समाधान है। हालांकि, iisreset को दो डेल कमांड से पहले रखें क्योंकि आप उन फ़ाइलों पर w3p.exe होल्डिंग के कारण डिलीट करने में सक्षम होना चाहते हैं। – Marc

0

सुनिश्चित करें कि आपके पास उस फ़ोल्डर की "विंडोज डेस्कटॉप खोज" अनुक्रमण जैसी कोई प्रक्रिया नहीं है।

0

ऐसा लगता है कि आपके पास उस फ़ाइल में एक खुले हैंडल है जो कुछ है; आप Filemon या कुछ समान टूल का उपयोग करके इसे ट्रैक कर सकते हैं यह देखने के लिए कि कौन सी प्रक्रिया खुली हैंडल रखती है।

1

मुझे इसी तरह की समस्याएं थीं "गलत" समय पर फ़ाइल तक पहुंचने वाले वर्कस्टेशन के एंटी-वायरस प्रोग्राम के कारण अतीत। फ़ाइल का खुलासा करने के लिए आप एक और टूल का उपयोग कर सकते हैं: Process Explorer (आपके व्यक्तिगत शस्त्रागार के लिए अनुशंसित है भले ही यह यहां उपयोगी साबित न हो)।

4

यदि यह वायरस स्कैनर या एक खोज अनुक्रमणिका जैसी कुछ बाहरी प्रक्रियाओं के कारण लॉक है, तो आप फ़ाइलों को पढ़ने के लिए अन्य उपयोगकर्ताओं और प्रक्रियाओं के अधिकारों को लॉक करने के लिए विंडोज अनुमतियों का उपयोग करने का प्रयास कर सकते हैं। डिफ़ॉल्ट रूप से, Temporary ASP.NET Files निर्देशिका उपयोगकर्ताओं, प्रशासकों, आईआईएस_यूएसआर, सिस्टम, और विश्वसनीय इन्स्टॉलर के लिए उपलब्ध है - जो कहने के लिए है, बस हर किसी के बारे में।

विभिन्न संकलन फ़ोल्डर की मैथ्यूमार्टिन की सलाह का प्रयास करें;

<compilation tempDirectory = “C:\LimitedPermissionCompilationDir\” /> 

और फिर LimitedPermissionCompilationDir फ़ोल्डर सीमित करने के लिए केवल उपयोगकर्ताओं और समूहों जो अनुमति की जरूरत है - जैसे, IIS_USR यदि आप आईआईएस, या अपने स्वयं के खाते पर चला रहे हैं आप फ़ाइल आधारित वेब सर्वर के लिए संकलन कर रहे हैं।

वैसे भी, यह चीजों को आजमाने की अपेक्षाकृत सुरक्षित तरीका है, क्योंकि आपको जिस साइट पर चल रहे हैं, उसके अलावा किसी अन्य चीज़ को प्रभावित करने की चिंता करने की आवश्यकता नहीं है।

+0

मुझे कोई समस्या है जहां आईआईएस रीसेट एक विशिष्ट पुराने माइक्रोसॉफ्ट डीएलएल से अस्वीकृत एक्सेस का कारण बनता है, और ऐप के लिए किसी भी बाद के स्पून-ऑफ नए आईआईएस टेम्पल फ़ोल्डर को ठीक कर दिया जाएगा। आश्वस्त है कि कुछ अन्य प्रक्रिया स्कैनिंग और इस विशिष्ट फ़ाइल को लॉक कर रही है, मैंने आपके समाधान का प्रयास किया और एप्लिकेशन के लिए एक कस्टम अस्थायी निर्देशिका को मजबूर कर दिया, और ऐसा लगता है कि यह काम कर रहा है। समस्या का समाधान नहीं (फ़ाइल का लॉकिंग), लेकिन पूरी तरह से स्वीकार्य कामकाज जो मैला या हैकी महसूस नहीं करता है। धन्यवाद! – Tor

+0

@tor कोई समस्या नहीं! –

1

मुझे यह पता चला जब मैं अपने web.config में किसी अन्य उपयोगकर्ता के लिए आईपर्सनेशन का उपयोग कर रहा था और उपयोगकर्ता के पास अधिकार नहीं थे। doh!

9

मेरे मामले में उत्तर छोटा था - यह कभी भी शुरू करने में त्रुटि नहीं थी। मेरे लिए, एएसपी.नेट वास्तव में हर बार जब यह मेरा वेब एप्लिकेशन शुरू करता है, तो आंतरिक रूप से इसे फेंक देता है, और मैं बस दुर्घटना (अन्य डिबगिंग सत्र से) पर "सभी अपवादों पर ब्रेक" सेटिंग भूल गया। मैंने इसे चेक किया और सब कुछ ठीक काम किया।

> mscorlib.dll!System.IO.__Error.WinIOError(int errorCode, string maybeFullPath) Unknown 
    mscorlib.dll!System.IO.FileStream.Init(string path, System.IO.FileMode mode, System.IO.FileAccess access, int rights, bool useRights, System.IO.FileShare share, int bufferSize, System.IO.FileOptions options, Microsoft.Win32.Win32Native.SECURITY_ATTRIBUTES secAttrs, string msgPath, bool bFromProxy, bool useLongPath, bool checkHost) Unknown 
    mscorlib.dll!System.IO.FileStream.FileStream(string path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, int bufferSize, System.IO.FileOptions options, string msgPath, bool bFromProxy) Unknown 
    mscorlib.dll!System.IO.FileStream.FileStream(string path, System.IO.FileMode mode) Unknown 
    System.Web.dll!System.Web.UI.Util.HasWriteAccessToDirectory(string dir) Unknown 
    System.Web.dll!System.Web.HttpRuntime.SetUpCodegenDirectory(System.Web.Configuration.CompilationSection compilationSection) Unknown 
    System.Web.dll!System.Web.HttpRuntime.HostingInit(System.Web.Hosting.HostingEnvironmentFlags hostingFlags, System.Security.Policy.PolicyLevel policyLevel, System.Exception appDomainCreationException) Unknown 
    System.Web.dll!System.Web.HttpRuntime.InitializeHostingFeatures(System.Web.Hosting.HostingEnvironmentFlags hostingFlags, System.Security.Policy.PolicyLevel policyLevel, System.Exception appDomainCreationException) Unknown 
    System.Web.dll!System.Web.Hosting.HostingEnvironment.Initialize(System.Web.Hosting.ApplicationManager appManager, System.Web.Hosting.IApplicationHost appHost, System.Web.Configuration.IConfigMapPathFactory configMapPathFactory, System.Web.Hosting.HostingEnvironmentParameters hostingParameters, System.Security.Policy.PolicyLevel policyLevel, System.Exception appDomainCreationException) Unknown 
    System.Web.dll!System.Web.Hosting.HostingEnvironment.Initialize(System.Web.Hosting.ApplicationManager appManager, System.Web.Hosting.IApplicationHost appHost, System.Web.Configuration.IConfigMapPathFactory configMapPathFactory, System.Web.Hosting.HostingEnvironmentParameters hostingParameters, System.Security.Policy.PolicyLevel policyLevel) Unknown 
    [AppDomain (DefaultDomain, #1) -> AppDomain (/LM/W3SVC/4/ROOT-1-130624548490751465, #2)] 
    System.Web.dll!System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(string appId, System.Web.Hosting.IApplicationHost appHost, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) Unknown 
    System.Web.dll!System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(string appId, System.Web.Hosting.IApplicationHost appHost, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) Unknown 
    System.Web.dll!System.Web.Hosting.ApplicationManager.GetAppDomainWithHostingEnvironment(string appId, System.Web.Hosting.IApplicationHost appHost, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) Unknown 
    System.Web.dll!System.Web.Hosting.ApplicationManager.CreateObjectInternal(string appId, System.Type type, System.Web.Hosting.IApplicationHost appHost, bool failIfExists, System.Web.Hosting.HostingEnvironmentParameters hostingParameters) Unknown 
    System.Web.dll!System.Web.Hosting.ProcessHost.StartApplication(string appId, string appPath, out object runtimeInterface) Unknown 
संबंधित मुद्दे