繁体   English   中英

如何使用SQL Server数据库正确重定向我的视图? (不是计算机上的本地数据库)

[英]How can I redirect my views correctly with a SQL server Database? (not local database on the computer)

我已经在Visual Studio 2013中使用Visual Basic创建了一个MVC应用程序,当用户登录该应用程序时,它将显示“登录失败”视图或继续进行“提交问题”视图。 当我在计算机上使用本地SQL Server数据库时,所有这些操作均正常工作,因为该数据库已正确重定向到所有视图。

但是,现在我必须发布应用程序,并在计算机上不使用实际的实时SQL数据库服务器。 问题在于它不会重定向到“提交问题页面”。

登录失败HTTP Post将返回结果号200(成功),但是Submit Issue HTTP Post将返回结果号302(重定向问题)。

该应用程序可以成功地从活动数据库中检索信息,因为当我将“登录”详细信息与数据库中的详细信息进行比较时,如下所示:

 Dim userdetailLocal = (From data In usertable.UserTables Where data.username = user.username AndAlso data.userPassword = user.userPassword Select data.username)

If (userdetailLocal.Count() > 0) Then

  Return RedirectToAction("SubmitIssue")

Else
    Return RedirectToAction("LogInFailure")

End If

当详细信息不正确或正确时,这将成功导航到两个选项。

但是,只有“ LogInFailure”视图将成功返回,如下所示:

Public Function LogInFailure() As ActionResult
     Return View()
End Function

“ submitIssue”视图将返回此错误:

“页面无法正确重定向。Firefox已检测到服务器正在以永远无法完成的方式重定向对该地址的请求。有时可能由于禁用或拒绝接受Cookie导致此问题。”

但是该视图基本上与另一个视图相同,唯一的区别是“ submitIssue”视图包含发布该Issue所需的其他信息。 唯一包含发布信息所需信息的视图是“登录”视图。

    Public Function SubmitIssue() As ActionResult
        Return View()
    End Function



<HttpPost()>
<AllowAnonymous>
<Authorize>
<ValidateAntiForgeryToken()>
Public Function SubmitIssue(<Bind(Include:="IssueID,IssueName,IssueSummary")>
                         ByVal issuetable As IssueTable, command As String, objModelMail As IssueTable) As ActionResult

   Return Redirect("Success")
    End Function

然后我的连接字符串是:

  add name="##connectionString##" 
     connectionString="metadata=res://*/IssueConnectionString.csdl|res://*/IssueConne ctionString.ssdl|res://*/IssueTracker.msl;
     provider=System.Data.SqlClient;
     provider connection string=&quot;
     data source=SERVER\SQLSERVERTEST;
     initial catalog=SERVERDATABASE;
     persist security info=False;
     user id=USER;
     pwd=PWDID;
     integrated security=False;
     workstation id=WORKSTATION;
     packet size=****;
     MultipleActiveResultSets=True;
     App=EntityFramework&quot;"
     providerName="System.Data.EntityClient" />

我认为这与数据库的权限有关,但是我不确定在使用服务器数据库而不是本地数据库时有人知道此重定向错误吗?

我还认为重定向循环来自浏览器,一次又一次成功地加载了页面。 但是它实际上无法检索视图,因此FireFox为什么显示该错误消息。 SubmitIssue视图的网络工具将返回以下内容:

SubmitIssue

 302 - POST - LogIn 
 200 - POST - abort?transport=longPolling&connectionToken=AQAAANC...
 302 - GET - submitIssue
 302 - GET - HttpError500
 302 - GET - NotFound
 302 - GET - NotFound (repeated infinitely)

LoginFailure

 302 - POST - LogIn
 200 - POST - abort?transport=longPolling&connectionToken=AQAAANC....
 200 - GET - LogInFailure
 200 - GET - broswerLink
 200 - GET - negotiate?requestURL=http://...

通过将以下信息添加到我的应用程序中,我使我的应用程序在服务器上工作。 之所以得到重定向循环,是因为缺少一些我需要添加的信息,这阻止了视图的正确加载。

在SubmitIssue(GET请求)中,我添加了以下viewbag的信息:

    ViewBag.issueTypeID = New SelectList(dbServer.IssueTypeTables, "IssueTypeID", "IssueTypeName")
    ViewBag.priorityID = New SelectList(dbServer.PriorityTables, "priorityID", "severity")

这允许控制器读取上面的两个ID,这是它跳过视图的原因之一。

解决该问题的第二件事是在SubmitIssue(POST请求)中添加更多信息。

Public Function SubmitIssue(<Bind(Include:="IssueID,IssueSummary,IssueTypeID,priorityID")>
                         issuetable As IssueTable, command As String, objModelMail As IssueTable) As ActionResult

将这两个都添加到我的应用程序中使我能够获取所有视图,以成功返回状态200(成功)并防止重定向循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM