Получать данные POST в кодировке не-UTF-8 (ASP.NET MVC) - PullRequest
8 голосов
/ 28 февраля 2012

мое приложение ASP.NET MVC - UTF-8, но я получаю POST-запрос в Encoding.Default от стороннего приложения из-под моего контроля.

Какой самый разумный и простой способ изменить запрос кодирование для только одного действия одного контроллера ?(Остальная часть моего заявления должна оставаться в UTF-8).

public class Message
{
 public int id { get; set; }
 public string phone { get; set; }
 public string mes { get; set; }
 public string to { get; set; }
}

[HttpPost]
public ActionResult Receive(Message msg)
{
        AddIncomingMessage(msg);
        return new EmptyResult();
}

Ответы [ 2 ]

2 голосов
/ 22 октября 2018

Вы можете выполнить кодирование запроса на основе действия в ASP.NET MVC с настройкой тега местоположения web.config.

Пример web.config:

<configuration>
...
<location path="path/to/your/actionmethod">
    <system.web>
        <globalization requestEncoding="ISO-8859-1" responseEncoding="ISO-8859-1" />
    </system.web>
</location>
...
</configuration>

http://www.siimviikman.com/2012/06/12/action-based-request-encoding-in-asp-net-mvc/

0 голосов
/ 13 апреля 2012

Я боролся с той же проблемой, поэтому после некоторых исследований я нашел это решение:

  1. Создание пользовательского атрибута фильтра действий:

    public class CharsetAttribute : ActionFilterAttribute
    {
        private readonly string _charset = null;
    
        public CharsetAttribute() : this("UTF-8")
        {}
        public CharsetAttribute(string charset)
        {
            _charset = charset;
        }
    
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.HttpContext.Response.Headers["Content-Type"] += string.Concat(";charset=", _charset);
        }
    }
    
  2. Поместите это в ваше действие, указав желаемую кодировку; в моем случае:

    [CharsetAttribute("ISO-8859-1")]
    public ActionResult MyAction(ThirdPartyViewModel model)
    { (...) }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...