2010-06-07 14 views
7

सारांश: हमारे वेब अनुप्रयोगों में से एक को C:\Windows\Temp पर लेखन पहुंच की आवश्यकता है। हालांकि, इससे कोई फर्क नहीं पड़ता कि मैं एनटीएफएस अनुमति को कितना कमजोर करता हूं, procmonACCESS DENIED दिखाता है।आईआईएस 7.5, एएसपी.नेट, प्रतिरूपण, और सी: विंडोज Temp

पृष्ठभूमि (जो या समस्या के लिए प्रासंगिक नहीं हो सकता है हो सकता है): हम एक एमएस एक्सेस डेटाबेस (: \ Windows \ अस्थायी जो सी के बाहर स्थित है) का उपयोग करने की OLEDB उपयोग कर रहे हैं। दुर्भाग्यवश, इस OLEDB ड्राइवर को उपयोगकर्ता प्रोफ़ाइल की TEMP निर्देशिका में लिखने की आवश्यकता होती है (जो आईआईएस 7.5 के तहत चलते समय सी: \ विंडोज \ Temp होता है), अन्यथा डरावनी "अनिर्दिष्ट त्रुटि" OleDbException फेंक दिया जाता है। विवरण के लिए KB 926939 देखें। मैंने केबी आलेख में चरणों का पालन किया, लेकिन यह मदद नहीं करता है।

विवरण:

यह icacls C:\Windows\Temp का उत्पादन होता है। डीबगिंग उद्देश्यों के लिए मैंने Everyone पर पूर्ण अनुमतियां दीं।

C:\Windows\Temp NT AUTHORITY\SYSTEM:(OI)(CI)(F) 
       CREATOR OWNER:(OI)(CI)(IO)(F) 
       BUILTIN\IIS_IUSRS:(OI)(CI)(S,RD) 
       BUILTIN\Users:(CI)(S,WD,AD,X) 
       BUILTIN\Administrators:(OI)(CI)(F) 
       Everyone:(OI)(CI)(F) 

हालांकि, इस procmon का स्क्रीनशॉट है:

procmon screenshot

Desired Access: Generic Read/Write, Delete 
Disposition: Create 
Options:  Synchronous IO Non-Alert, Non-Directory File, Random Access, Delete On Close, Open No Recall 
Attributes:  NT 
ShareMode:  None 
AllocationSize: 0 
Impersonating: MYDOMAIN\myuser 

पुनश्च: जब MYDOMAIN\myuser रूप में लॉग इन, मैं बिना किसी समस्या के विन्डोज़ एक्सप्लोरर का उपयोग C:\Windows\Temp में फ़ाइलों को बना सकते हैं।

संपादित: web.config के प्रासंगिक भागों:

<authentication mode="Windows" /> 
<identity impersonate="true" /> 
<authorization> 
    <deny users="?" /> 
    <allow users="*" /> 
</authorization> 

प्रमाणीकरण, काम करने के लिए लगता है जैसे कि, System.Security.Principal.WindowsIdentity.GetCurrent().Name (जो अपने कस्टम त्रुटि पृष्ठ पर दिखाया गया है) रिटर्न MYDOMAIN\myuser

+0

पुनश्च: मैं भी बजाय serverfault को यह पोस्टिंग करार दिया, लेकिन मेरा अनुमान होगा कि इस के साथ कैसे ASP.NET एक Windows बजाय प्रतिरूपण संभालती एक समस्या है विन्यास मुद्दा। – Heinzi

+0

'web.config' में '<प्रमाणीकरण ...>' और' <पहचान ...> 'के मान क्या हैं और क्या आईआईएस अज्ञात पहुंच की अनुमति देने के लिए कॉन्फ़िगर किया गया है (सुनिश्चित नहीं है कि यह अभी भी आईआईएस 7 में लागू है)? – scherand

+0

@scherand: मैंने अपना प्रश्न अपडेट कर लिया है। IIS7.5 .net सेटिंग्स w.r.t. का उपयोग करने लगता है। अज्ञात पहुंच – Heinzi

उत्तर

3

आप इस पर चरणों का पालन करने की कोशिश की है: loadUserProfile and IIS 7 temporary directory failures

+0

ठीक है, यह वही है जो मैंने किया (अनुदान अनुमतियां)। मैं अब तक * पूर्ण * अनुमति देने के लिए चला गया। – Heinzi

+0

यदि वह temp dir है, तो आपने इसे लोड नहीं किया है * यूजरप्रोफाइल –

+0

@ एंड्रयूबार्बर: आलेख कहता है: "* जवाब बहुत सीधी आगे है: लोड यूज़रप्रोफाइल, ** या ** एसीएल अस्थायी निर्देशिका को अनुमति दें लिखते हैं। * "ध्यान दें" * या * "। इस प्रकार, लेख के मुताबिक, अस्थायी निर्देशिका पर एसीएल सेट करना * समस्या को ठीक करना चाहिए, लेकिन ऐसा नहीं है। लेकिन हां, loadUserProfile का उपयोग कर कामकाज उपयोगी है, इसलिए उत्तर में +1 (अभी तक कोई "स्वीकृत उत्तर" नहीं है, क्योंकि यह मूल प्रश्न का उत्तर नहीं देता है - "सी: \ विंडोज \ Temp तक लिखने का उपयोग क्यों नहीं करता है हालांकि पूर्ण अनुमति दी जाती है ")। :-) – Heinzi

संबंधित मुद्दे