我被要求對現有的MVC網站進行更改,但不幸的是,該網站的原始開發人員不在公司,沒有任何文檔,也沒有人真正瞭解它不是目前運行在我們的測試&現場環境。 呻吟無法在本地運行MVC Web應用程序
反正當我設置項目爲抓手項目並運行它,我得到以下可愛的白色錯誤頁:
Access is denied.
Description: An error occurred while accessing the resources required to serve this request. The server may not be configured for access to the requested URL.
Error message 401.2.: Unauthorized: Logon failed due to server configuration. Verify that you have permission to view this directory or page based on the credentials you supplied and the authentication methods enabled on the Web server. Contact the Web server's administrator for additional assistance.
不是大量的錢讓我繼續(至少對我來說)。 所以我在web.config文件檢查和authorization
設置爲:
<authorization>
<deny users=」?」 />
</authorization>
如果我改變了對下面的代碼我得到一個頁面,指出它無法加載,但它是一個一步因爲我至少可以進入一些代碼。
<authorization>
<allow users="*"/>
</authorization>
代碼沒有做對Active Directory
一些驗證,其工作方式,我可以通過設置一個破發點,並移動過去的功能避開那個討厭的安全代碼。如果用戶有效(我將斷點移至此處),則代碼本身不執行任何操作,但返回true
,如果它們無效,則返回false
。這是我能夠在控制器中捕捉斷點以查看是否發生任何事情的唯一方式,但沒有任何內容突出。 該代碼儘可能部分地在類中,它將使用LINQ
來獲取正確的信息。
public ReadOnlyCollection<Application> GetApplicationStatus()
{
using (ApplicationDBEntities context = new ApplicationDBEntities())
{
var results = (from parameters in context.Parameters
join application in context.ApplicationIds on parameters.ApplicationId equals application.ApplicationId1
where parameters.ParameterName.Equals("DateTime", StringComparison.OrdinalIgnoreCase) &&
!parameters.Application.Equals(0)
select new Application
{
ApplicationId = parameters.ServiceId,
ApplicationStatus = application.Status,
DateAdded = parameters.ParameterValue
}).ToList();
return new ReadOnlyCollection<Application>(results);
}
}
在上面的代碼獲取results
時會拋出EntityException,在異常的消息是「基礎提供失敗的打開。」具體的行強調是var results = (from parameters in context.Parameters
有了這個,我想通要麼代碼目前住的是不一樣的我有什麼(但願不是這樣),還是其他什麼東西漲,這是當我發現了Inner Exception
消息:Login failed for user 'NT AUTHORITY\\ANONYMOUS LOGON'.
連接字符串如下:
<connectionStrings>
<add name="ApplicationDBEntities" connectionString="metadata=res://*/ApplicationDBModel.csdl|res://*/ApplicationDBModel.ssdl|res://*/ApplicationDBModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MyServer;initial catalog=MyDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
它試圖從中獲取信息的SQL database
是我可以直接訪問的。這可能是因爲IIS
帳戶沒有訪問權限嗎?是否有任何提示或暗示試圖找到此問題的根源?
您能否介紹一下您的開發和生產環境的一些細節。它是否在兩個環境中部署到IIS? –
實時它被部署到IIS,本地我從項目的屬性/ Web選項卡創建了一個虛擬目錄,將它添加到我的本地IIS – MattR
是否使用ActiveDirectory用戶轉到sql數據庫(即對於每個用戶網站你創建域用戶並將其添加到SQL)? –