欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

使用Membership或其他的Providers的ASP.NET2.0

系統(tǒng) 2150 0

現(xiàn)象2.在vs2005環(huán)境下運(yùn)行程序,A用戶登錄成功,換在IIS下瀏覽,A用戶登錄失敗。

原因在于web.config中自定義的身份驗(yàn)證提供者中缺少了applicationname的設(shè)置

原文: http://lovewangshu.cnblogs.com/archive/2006/04/24/383513.html

在配置使用Membership或其他的Providers的ASP.NET2.0時(shí)一定要設(shè)置applicationName屬性
原文: Always set the "applicationName" property when configuring ASP.NET 2.0 Membership and other Providers
作者:Scott Guthrie
翻譯:范維肖
注釋:對(duì)于個(gè)別名詞保留英文描述或翻譯參考。

場(chǎng)景
在本地開發(fā)一個(gè)asp.net2.0的應(yīng)用程序時(shí)使用了Membership、Roles或Profile特性。你創(chuàng)建了一些新用戶,一切都沒有問題。

然后把這個(gè)程序copy到遠(yuǎn)程服務(wù)器(remote server)上(或者只是移動(dòng)到你本地服務(wù)器上的其他目錄)然后運(yùn)行。由于某種原因,雖然我們能夠連接到membership數(shù)據(jù)庫(kù),但是當(dāng)?shù)顷懙臅r(shí)候就會(huì)出現(xiàn)錯(cuò)誤了,它并不拋出連接錯(cuò)誤(connection error),而是提示你像類似的錯(cuò)誤:“嘗試登陸失敗,請(qǐng)重試”(Login attempt unsuccessful, please try again)

原因
這種經(jīng)常出現(xiàn)的錯(cuò)誤的原因是因?yàn)閙embership(或者是roles、profile) provider已經(jīng)被加入到了程序的web.config里了。但是applicationName屬性(attribute)并沒有被指定(假設(shè)下面的代碼的粗體部分布存在地話)

< membership >

< providers >

< clear />

< add name ="AspNetSqlMembershipProvider"

type ="System.Web.Security.SqlMembershipProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"

connectionStringName ="LocalSqlServer"

enablePasswordRetrieval ="false"

enablePasswordReset ="true"

requiresQuestionAndAnswer ="true"

requiresUniqueEmail ="false"

passwordFormat ="Hashed"

maxInvalidPasswordAttempts ="5"

minRequiredPasswordLength ="7"

minRequiredNonalphanumericCharacters ="1"

passwordAttemptWindow ="10"

passwordStrengthRegularExpression =""

applicationName ="/"

/>

</ providers >

</ membership >

如果applicationName屬性沒有被配置的話,當(dāng)往程序的數(shù)據(jù)庫(kù)里添加數(shù)據(jù)的時(shí)候,asp.net會(huì)使用程序在web服務(wù)器里的虛擬目錄路徑(vroot Path)自動(dòng)的計(jì)算applicationName的值。我們打開aspnetdb數(shù)據(jù)庫(kù),看aspnet_Applications表,就能了解這一行為:


這個(gè)表里為每個(gè)applicationName存儲(chǔ)了一個(gè)具有唯一值(unique)的ApplicationID。因?yàn)樵谖覀兊某绦蚶镒?cè)一個(gè)用戶的時(shí)候并沒有指定一個(gè)applicationName屬性,所以它自動(dòng)的被設(shè)置(計(jì)算)為/website8(早期建立項(xiàng)目時(shí)的名字

如果applicationName屬性沒有被配置的話,當(dāng)往程序的數(shù)據(jù)庫(kù)里添加數(shù)據(jù)的時(shí)候,asp.net會(huì)使用程序在web服務(wù)器里的虛擬目錄路徑(vroot Path)自動(dòng)的計(jì)算applicationName的值。我們打開aspnetdb數(shù)據(jù)庫(kù),看aspnet_Applications表,就能了解這一行為:


這個(gè)表里為每個(gè)applicationName存儲(chǔ)了一個(gè)具有唯一值(unique)的ApplicationID。因?yàn)樵谖覀兊某绦蚶镒?cè)一個(gè)用戶的時(shí)候并沒有指定一個(gè)applicationName屬性,所以它自動(dòng)的被設(shè)置(計(jì)算)為/website8(早期建立項(xiàng)目時(shí)的名字)

然后,使用membership API創(chuàng)建的用戶會(huì)與ApplicationID相關(guān)聯(lián),這樣可以找到applicationName(and in turn the applicationName)。【這樣做的目的可以讓我們的多個(gè)應(yīng)用程序和站點(diǎn)使用同一個(gè)數(shù)據(jù)庫(kù)】。打開aspnet_Users表就可以可以看到這些。


如果把這個(gè)程序配置成運(yùn)行在/website8虛擬目錄下那么一切都沒有問題。但是如果它被copy到其他的地方或服務(wù)器上并且更換了虛擬路徑(比如說(shuō)“/app1”或更通常被設(shè)置的“/”)后,當(dāng)Membership APIs被使用時(shí)他們就“看”不到數(shù)據(jù)庫(kù)里已有的用戶了——因?yàn)樗麄儗?huì)使用一個(gè)不同的applicationName去數(shù)據(jù)庫(kù)里尋找用戶,相應(yīng)地過(guò)濾application_Users表中的用戶。這就是為什么會(huì)出現(xiàn)上面錯(cuò)誤的原因。

如何解決這個(gè)問題
最簡(jiǎn)單的辦法是打開ASPNETDB數(shù)據(jù)庫(kù)中的aspnet_Users和aspnet_Application表,去“回想”(figure out,因?yàn)槟菚r(shí)候我們的虛擬目錄叫什么名字我們恐怕已經(jīng)忘了)創(chuàng)建用戶和其他數(shù)據(jù)的時(shí)候的程序名稱(去aspnet_Application表中查找)

然后打開你的web.config文件,添加一個(gè)applicationName屬性到provider聲明的地方并且給他賦值,例如,下面的代碼我們把它設(shè)置為在aspnet_Application表存在的/website8:

< membership >

< providers >

< clear />

< add name ="AspNetSqlMembershipProvider"

type ="System.Web.Security.SqlMembershipProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"

connectionStringName ="LocalSqlServer"

enablePasswordRetrieval ="false"

enablePasswordReset ="true"

requiresQuestionAndAnswer ="true"

requiresUniqueEmail ="false"

passwordFormat ="Hashed"

maxInvalidPasswordAttempts ="5"

minRequiredPasswordLength ="7"

minRequiredNonalphanumericCharacters ="1"

passwordAttemptWindow ="10"

passwordStrengthRegularExpression =""

applicationName ="/website8"

/>

</ providers >

</ membership >

這樣程序就能正常的工作,無(wú)論我們部署這個(gè)程序到那個(gè)虛擬目錄。

當(dāng)然,我們還要保證Roles、Profile、WebPartPersonalization或其他的我們配置的providers也要被配置了。

這樣我們的程序可以正常工作了。

如果在一開始就避免它:
避免這個(gè)問題的最好的辦法是始終設(shè)置applicationName的值。一個(gè)比較好的默認(rèn)值是使用“/”。

使用Membership或其他的Providers的ASP.NET2.0時(shí)一定要設(shè)置application


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美精品久久久久久久久久 | 亚洲区激情区图片小说区 | 又大又粗进出白浆直流动态图 | 日本免费一级视频 | 国产午夜精品理论片免费观看 | 亚洲国产天堂久久综合9999 | 色视频网站在线观看 | 亚洲精品中文字幕在线观看 | 国产91久久精品一区二区 | 久久久久久免费一区二区三区 | 天天摸夜夜操 | 丝袜美腿视频一区二区三区 | 国产福利在线永久视频 | 日本在线视频网 | 秋霞日韩久久理论电影 | 欧美亚洲高清 | 国产精品揄拍100视频最近 | 国产三级在线播放 | 97麻豆精品国产自产在线观看 | 亚洲三级视频 | 97中文| 9999人体做爰大胆视频 | 91网站免费观看 | 亚洲a网 | 天天射天天操天天干 | 日韩精品一区二区三区在线观看 | 2022国产成人精彩在线视频 | 9l蝌蚪porny中文自拍 | 99久久九九爱看免费直播 | 国产免费观看一区二区三区 | aaqqw| 亚洲人成免费网站 | 国产肝交视频在线观看 | 国产一区二区三区久久久久久久久 | 奇米在线观看视频 | 性久久久久久久久波多野结衣 | 中国女警察一级毛片视频 | 一级片免费在线观看 | 114美女做爰视频在线 | 成人片黄网站A片免费 | 欧美高清视频一区 |