Японские символы с IIS7 URL переписать asp.net - PullRequest
1 голос
/ 14 июня 2011

Помогите, пожалуйста, я построил свой веб-сайт [на японском языке] с использованием модуля перезаписи, он работал хорошо и переписал мой URL очень хорошо, но когда мне вставили данные на японском языке, он не переписал мой URL и не получил [неверный запросошибка].

Примечание Если данные веб-сайта работали хорошо на английском языке.

Обновление

Это образецмоего перезаписываемого кода webconfig

<rewrite url="~/Seightseeing/(.+)/(.+).aspx" to="~/ExcursionsDetails.aspx?packageId=$1"/>
<rewrite url="~/LocalExperience/(.+)/(.+).aspx" to="~/ExcursionsDetails.aspx?packageId=$1"/>
<rewrite url="~/ShoreExcursions/(.+)/(.+).aspx" to="~/ExcursionsDetails.aspx?packageId=$1"/>

Я думаю, что причиной ошибки [Bad Request] является то, что URL может иметь специальный символ, хотя в GenerateURLMethod кроме очистки специального символа, который я выложил методом ниже

public static string GenerateURL(object Title, object strId)
{
    string strTitle = Title.ToString();

    #region Generate SEO Friendly URL based on Title
    //Trim Start and End Spaces.
    strTitle = strTitle.Trim();

    //Trim "-" Hyphen
    strTitle = strTitle.Trim('-');

    strTitle = strTitle.ToLower();
    char[] chars = @"$%#@!*?;:~`+=()[]{}|\'<>,/^&"".".ToCharArray();
    strTitle = strTitle.Replace("c#", "C-Sharp");
    strTitle = strTitle.Replace("vb.net", "VB-Net");
    strTitle = strTitle.Replace("asp.net", "Asp-Net");

    //Replace . with - hyphen
    strTitle = strTitle.Replace(".", "-");

    //Replace Special-Characters
    for (int i = 0; i < chars.Length; i++)
    {
        string strChar = chars.GetValue(i).ToString();
        if (strTitle.Contains(strChar))
        {
            strTitle = strTitle.Replace(strChar, string.Empty);
        }
    }

    //Replace all spaces with one "-" hyphen
    strTitle = strTitle.Replace(" ", "-");

    //Replace multiple "-" hyphen with single "-" hyphen.
    strTitle = strTitle.Replace("--", "-");
    strTitle = strTitle.Replace("---", "-");
    strTitle = strTitle.Replace("----", "-");
    strTitle = strTitle.Replace("-----", "-");
    strTitle = strTitle.Replace("----", "-");
    strTitle = strTitle.Replace("---", "-");
    strTitle = strTitle.Replace("--", "-");

    //Run the code again...
    //Trim Start and End Spaces.
    strTitle = strTitle.Trim();

    //Trim "-" Hyphen
    strTitle = strTitle.Trim('-');
    #endregion

    //Append ID at the end of SEO Friendly URL
    strTitle = "~/Seightseeing/" + strId + "/" + strTitle + ".aspx";
    return strTitle;
}

1 Ответ

0 голосов
/ 14 июня 2011

Я не могу сказать, что не так из кода, который вы предоставили.Какой модуль перезаписи URL вы используете?Проверяли ли вы входные параметры в методе GenerateURL (Title, strId), чтобы убедиться, что в него передаются правильные значения?Я мог видеть, что этот метод генерирует недопустимый URL, например, если вы передадите "http://xyz.com",, то код под //Replace Special-Characters удалит часть ://.

Вы уверены, что используетемодуль правильно? Мне кажется странным, что вы определяете шаблон перезаписи в web.config (<rewrite url="~/Seightseeing/(.+)/(.+).aspx"...>), а затем определяете его снова в методе GenerateURL в //Append ID at the end of SEO Friendly URL.

Также я заметилкод под //Replace multiple "-" hyphen with single "-" hyphen выглядит интересно. Вот более элегантная версия:

while (strTitle.Contains("--"))
    strTitle = strTitle.Replace("--", "-");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...