所以我用ASP.NET(C#)創建了一個Web應用程序(不是網站),它在VS13環境下編譯得很好。但是,當我在IIS上發佈它時,默認文檔上的回發失敗。默認文檔稱爲LoginPage.aspx。只要我點擊來運行我的代碼,它所做的只是刷新頁面。該項目暫時已在我的本地127.0.0.1 IP地址上發佈。默認回傳失敗文檔
我知道這是一個記錄的問題,但我已經嘗試了很多解決方案,並沒有遇到一個解決方案。我曾嘗試過的一些解決方案:
- 使用最少的代碼創建一個全新的Web應用程序,以嘗試訪問任何回傳而沒有成功。
- 我嘗試沒有成功這裏提出的第一個解決方案:在無所適從,這裏發生了什麼
<urlMappings> <add url="~/login" mappedUrl="~/Views/LoginPage.aspx" /> <add url="~/login/" mappedUrl="~/Views/LoginPage.aspx" /> </urlMappings>
我也試過URL映射。當應用程序被通過Visual Studio運行有一件事我沒有注意到是,在LoginPage.aspx的<form>
標記出現在Chrome中爲:
<form method="post" action="LoginPage" id="ct101" class=".myForm">
通過IIS:
<form method="post" action="./" id="ct101" class=".myForm">
不知道這是也是一個問題。我嘗試將action
硬編碼爲login
以查看會發生什麼,並確實重定向到正確的頁面,但是由於懷疑沒有回發被觸發 - My Session變量返回null,並且沒有使用查詢字符串。
下面是相關LoginPage.aspx前端代碼(修剪了一堆不相關的HTML):
<%@ Page Title="DREW KENNEDY | WELCOME" Language="C#" MasterPageFile="Site.Master" AutoEventWireup="true" CodeBehind="LoginPage.aspx.cs" Inherits="MyMedia.Views.LoginPage" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<!-- form is located on Site.Master -->
<asp:Button OnClick="LoginBtn_Click" CssClass="login" runat="server" name="submit" Text="Sign In" />
</asp:Content>
而且LoginBtn_Click方法LoginPage.aspx.cs:
protected void LoginBtn_Click(object sender, EventArgs e) {
//Tried the following line while commenting out everything else to make sure Postback is being ignored
//Response.Write("<script>alert('Test');</script>");
try {
AbstractPersistenceDecorator decorator = new PersistenceDecorator();
string uname = username.Text.Trim();//username is a TextBox Control
string pass = password.Text.Trim();//password is a TextBox control
bool isCookieRequested = CheckBox.Checked;
if (decorator.authenticate(uname, pass)) {//calling SQL Server for authentication
User AuthenticatedUser = (User)Session["User"] ?? decorator.getUserInfo(uname);
if (Session["User"] == null) Session["User"] = AuthenticatedUser;
if (isCookieRequested) {
HttpCookie cookie = new HttpCookie("username", AuthenticatedUser.Username);
cookie.Expires.AddDays(7);
Response.Cookies.Add(cookie);
} else {
Session.Timeout = 15;
}
Thread.Sleep(1600);
//string redirect = string.Format("dashboard?username={0}", AuthenticatedUser.Username);
Response.Redirect("dashboard?username=" + AuthenticatedUser.Username);
}
} catch (Exception ex) {
//who cares?
}
}
決賽部分信息:
- 運行IIS 8.0
- 應用使用4.5框架創建的應用程序池也是4.5框架
- 我已經確保ASP.NET安裝在IIS上
- 我確實在global.asax文件中有URL ReWriting,但我不確定這是否以任何方式相關(我不知道如何)。
- 我沒有Default.aspx頁面
編輯:
- 通過對IE11和FF 127.0.0.1具有相同的結果只是測試項目。
編輯#2:我沒有成功嘗試
的其他事項:
- 我試着刪除我的URL重寫
- 我嘗試添加一個空的URL重寫規則,即
("Empty URL", "", "~/Views/LoginPage.aspx")
附加說明:
- 我不使用Telerik的
- 我不使用ISAPI
- 在Visual Studio中的項目設置爲
debug
而不是release
你是如何確定郵政回來沒有發生?如果你的事件處理程序拋出你只是吞下異常,所以它可能看起來什麼都不做。 – 2014-12-05 17:11:43
@BenRobinson我在'try/catch'塊的上方拋出了一個'Response.Write();'註釋掉方法中的其餘代碼,但它仍然不會觸發。在我提供的代碼中就在上面。如果在這種情況下真正發生錯誤而沒有錯誤處理,我會收到一個錯誤頁面,但這並沒有發生。 – 2014-12-05 17:14:49
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 Page_Load打電話給誰? – 2014-12-08 20:52:06