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