मेरे वेब कोर एपीआई में यह कोड पुष्टि करता है कि मैं एक प्रमाणित उपयोगकर्ता हूं, लेकिन मुझे अपना उपयोगकर्ता नाम नहीं मिल रहा है, इसके बजाय मुझे एप्लिकेशन पूल का नाम मिल रहा है। मैं इसे कैसे ठीक करूं?मुझे विंडोज प्रमाणीकृत वेब कोर एपीआई में अपना उपयोगकर्ता नाम क्यों नहीं मिल रहा है?
var testa = User.Identity.GetType();
NLogger.Info($"testa = {testa}");
var testd = User.Identity.IsAuthenticated;
NLogger.Info($"testd = {testd}");
var loggedInUser = User.Identity.Name;
NLogger.Info($"loggedInUser = {loggedInUser}");
मेरे लॉगफाइल में मुझे मिलता है;
testa = System.Security.Principal.WindowsIdentity
testd = True
loggedInUser = IIS APPPOOL\SIR.WEBUI
मैं नियंत्रक के लिए [अधिकृत] टैग का उपयोग करता हूं और अनाम प्रमाणीकरण अक्षम है।
ठीक है मैं पोस्टमैन से विधि को कॉल करता हूं, यह ठीक काम करता है, LoggedInUser सही है। लेकिन जब मैं अपने कोड से कॉल करता हूं तो मुझे ऊपर दिखाया गया गलत लॉग इन यूज़र मिलता है। मेरे क्लाइंट ऐप से वेब एपीआई कॉल करने के लिए मैं जिस कोड का उपयोग करता हूं वह है;
public static async Task<IEnumerable<ContractDto>> GetAllForUser()
{
using (var client = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true }))
{
client.BaseAddress = new Uri(AppSettings.ServerPathApi);
var path = GetPath("getallforuser");
var response = await client.GetAsync(path);
response.EnsureSuccessStatusCode();
var stringResult = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<IEnumerable<ContractDto>>(stringResult);
}
}
आईआईएस में मैंने विभिन्न पूल विकल्पों में एप्लिकेशन पूल प्रकार सेट किया है; एप्लिकेशनपूलिडेंसी, नेटवर्क सेवा, लोकलसोर्स, लोकलसिस्टम और प्रत्येक बार एप्लिकेशन का परीक्षण किया। मुझे पृथ्वी पर क्या याद आ रही है?
एक ने वही समस्या का जवाब स्वीकार यहाँ https://stackoverflow.com/a/12675503/5233410 – Nkosi
मुझे यकीन है कि नहीं कर रहा हूँ कोशिश कर सकते हैं यदि यह समस्या है, लेकिन मेरा सुझाव है कि आप "उपयोगकर्ता प्रोफ़ाइल लोड करें" को सही पर सेट करने का प्रयास करें, यदि पहले से नहीं है, IIS – Shahbaz
@Nkosi में, कोशिश की लेकिन यह काम नहीं करता है। मैं वेब कोर एपीआई का उपयोग कर रहा हूं और मुझे लगता है कि प्रतिरूपण अलग-अलग काम करता है। शायद मुझे प्रतिरूपण का उपयोग करना चाहिए? लेकिन फिर मुझे AJAX का उपयोग करते समय ऐसा करने की आवश्यकता नहीं है, तो सी # को अलग क्यों होना चाहिए? – arame3333