1

asp.netVBContext.RewritePathを使用してスタイルシートCSSをロードする際に問題が発生します。

私のプロジェクトはフライサブドメインシステムに取り組んでいます。これを abcUser.mydomain.comに入力すると、アドレスバーのアドレスを変更せずに、 mydomain.com / users / abcUser/default.aspxからabcUserのデフォルトページが取得されます。物理的なサブドメインが存在しないことを忘れないでください。

私のプロジェクトでは、folderという名前のユーザーが存在する場合、/ users /<abcUser>/default.aspxからデフォルトページをロードします。

今ブラウザで私が直接パスを入力した場合

例:www.mydomain.com/users/ <abcUser> /default.aspx

次に、cssスタイルシートをロードしますが、次のようにパスを入力すると、次のようになります。

例:abcUser.mydomain.com

次に、default.aspxページをロードしますが、cssファイルはロードしません

  • これはGlobal.asaxApplication_BeginRequestコードです:

If Directory.Exists(Server.MapPath("~/users/" & parameters(i))) Then
   Context.RewritePath("/users/" & parameters(i) & "/default.aspx", False)                    
    Return
Else
    Context.RewritePath("/error.aspx")
    Return
End If

Parameters(i)変数には、ブラウザにサブドメインとして入力された値が含まれます(例:abcUser)。

  • これは私のフォルダ構造です:

ここに画像の説明を入力してください

  • これは私のdefault.aspxページコードです:

    <link href="StyleSheet.css" rel="stylesheet" />
    

追加の詳細:microsoft.aspnet.friendly.urlsLINK用の新しいASP.NETおよびWebTools2012.2Updateをインストールしまし。そしてそれは約束通りに機能していて、私のすべての新旧のWebページは今や友好的です。私のプロジェクトはasp.net4webformiis7です

Global.asaxコード:

  Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    Dim fullHostPath As String = Request.Url.ToString()
    Dim url As New System.Uri(fullHostPath)
    Dim fullDomain As String = url.Host
    Dim parameters() As String = fullDomain.Split(".")
    Dim originalPath As String = HttpContext.Current.Request.Path.ToLower()
    '   

    For i As Integer = 0 To parameters.Length - 1
        If parameters(i) = "localhost" Or parameters(i) = "abc" Then
            'if User enter www.abc.com
            parameters(i) = 0
            Return
        End If
        If parameters(i) = "www" Then
            'if User enter WebName with "www" eg: www.jasbir.abc.com
            'i+=1 gives the next array value, next array is the user name in "fulldomain" variable
            i += 1
            GlobalUserNameVar = parameters(i)   ' get current subdomain name and store for CSS
            If parameters(i) <> "abc" Then
                If originalPath.Contains("/dashboard") And Directory.Exists(Server.MapPath("~/users/" & parameters(i))) Then
                    'check is full path contains "/dashboard" keyword if yes then move to this:-
                    Context.RewritePath(originalPath.Replace("/dashboard", "~/dashboard"), False)
                    Return
                ElseIf originalPath.Contains("/profile") And Directory.Exists(Server.MapPath("~/users/" & parameters(i))) Then
                    'check is full path contains "/profile" keyword if yes then move to this:-
                    Context.RewritePath(originalPath.Replace("/profile", "/users/" & parameters(i) & "/profile"), False)
                    Return
                ElseIf Directory.Exists(Server.MapPath("~/users/" & parameters(i))) Then
                    'check user named directory exists or not if yes then do this:-
                    HttpContext.Current.Server.TransferRequest("/users/" & parameters(i) & "/default.aspx", False)
                    Return
                Else
                    Context.RewritePath("/error.aspx")
                    Return
                End If
            Else
                Return
            End If
        End If
        Next

これはdefault.aspxページコードです

<script type="text/javascript" charset="utf-8">
    $(document).ready(function () {
    function oGod(textboxID, NewValue, textboxUserName) {
        var resultData;

        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "default.aspx/HelloWorld",
            data: '{ "varTextBoxID" : "' + textboxID + '", "varNewData" : "' + NewValue + '", "varUserName":  "' + textboxUserName + '"}',
            dataType: "json",
            async: false,
            success: function (msj) {                    
                resultData = msj.d;
                return resultData;
            },
            error: function (e) {                    
                resultData = "error";                   
                return resultData;
            }

        });           

        return resultData;
    }

default.aspx.vbコード

<WebMethod()> _
Public Shared Function HelloWorld(varTextBoxID As String, varNewData As String, varUserName As String)
    Dim tempData As String = Nothing

    If varTextBoxID = "edit_main_contents" Then
        tempData = UpdateHouseDatabase(varTextBoxID, varNewData, varUserName)
    End If
    If varTextBoxID = "edit_second_contents" Then
        tempData = UpdateHouseDatabase(varTextBoxID, varNewData, varUserName)
    End If
    If varTextBoxID = "user_ID" Then
        tempData = varNewData
    End If

    Return tempData
End Function
4

1 に答える 1

1

を使用することになりましたServer.TransferRequest。この方法を使用した場合、問題は明らかにならないようです。どうしてか分かりません...

于 2013-11-10T17:14:38.777 に答える