Добавить почтовый заголовок в функцию почты
$header = "From: noreply@example.com\r\n";
$header.= "MIME-Version: 1.0\r\n";
$header.= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$header.= "X-Priority: 1\r\n";
$status = mail($to, $subject, $message, $header);
if($status)
{
echo '<p>Your mail has been sent!</p>';
} else {
echo '<p>Something went wrong, Please try again!</p>';
}
Вставьте перенастройку сборки в ваше приложение / web.config;
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" PublicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="1.0.0.0-4.5.11.0" newVersion="4.5.11.0" />
</dependentAssembly>
Обратите внимание, что номера версий должны соответствовать установленной вами версии.
Вышеупомянутые решения верны, но есть еще один момент, который нельзя забывать: содержимое app.config было таким же, как и вышеупомянутые решения.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Но это хорошая идея проверить если он обновлен. В моем случае Newtonsoft.JSON (v.6.0.4) зависеть от другого пакета.
Есть два варианта:
И последний совет, если вы работаете с несколькими проектами, например. exe-dll и проверить обе версии, если есть Newtonsoft.JSON.
blockquote>
В моем случае я удалил пакет с NuGet и установил новый. Затем удалите ссылку из списка и добавьте снова вручную. Работает как шарм. Надежда решится для вас.
Я легко устранил эту проблему: я не скопировал файл конфигурации xml из папки компиляции.
Я просто убедился, что файл конфигурации xml также был включен вместе с моей программой, и все работало нормально !
Имел эту же проблему.
Просто решил.
Это произошло после того, как NuGet был использован для установки Ext.NET, у которого есть зависимость от Newtonsoft.JSON. Уже был файл Newtonsoft.JSON.dll в / bin (и, очевидно, ссылка на него в файле web.config), без проверки. Я начал процедуру установки пакета NuGet во время отладки (так что файл, вероятно, имел блокировку).
В окне ошибки времени выполнения он расскажет вам о трассировке стека, в какой части манифеста есть проблема, у меня была основная версия, поэтому я проверил версию пакета установки. и это была 1 основная версия. Найден исходный файл NuGet: «[fизический путь] /../ packages / Newtonsoft.Json. [Версия] / lib / [. Net version] /"
Оба манифеста и библиотека были там так скопированы
Сэмплы кода: До
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
После
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
Надеюсь, это поможет
Вы можете изменить конфигурацию сборки и добавить перенаправление. См. Перенаправление версий сборки в MSDN.
В основном вы хотите добавить следующий фрагмент в ваш файл app.config
или web.config
:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json"
publicKeyToken="30ad4fe6b2a6aeed"
culture="neutral" />
<!--
Assembly versions can be redirected in application,
publisher policy, or machine configuration files.
-->
<bindingRedirect oldVersion="1.0.0.0-4.5.11.0" newVersion="4.5.11.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
EDIT
Зачем вам нужно перенаправить версии сборки? Несмотря на то, что SocketIO4Net поддерживает более новые версии Newtonsoft.Json, он был скомпилирован против единственной версии (4.0.8 в вашем случае). Эта версия хранится в DLL и используется для загрузки DLL-файлов. SocketIO4Net зависит от.
Обратите внимание, что зависимости NuGet не совпадают с зависимостями DLL / времени выполнения - зависимость NuGet от Newtonsoft.Json> = 4.0.8 только означает, что вам будет разрешено установить SocektIO4Net в проект с более новой версией Newtonsoft.Json, он не имеет ничего общего с настройками времени исполнения.
Как утверждают, последние версии NuGet должны добавлять сборки, привязки-перенаправления автоматически для вас, если ваш проект имеет файл app.config или web.config.
Просто это случилось с TeamCity, и я думаю, что другие скоро это испытают. Вероятно, это относится к большинству серверов сборки, которые вытаскивают пакеты NuGet.
Все ответы, которые говорят о необходимости перенаправления, верны. Однако вам необходимо определить правильный номер версии. Мой проект использовал Newtonsoft.Json 7.0
, однако они только что выпустили 8.0
, и TeamCity сбрасывал 8.0
, что вызывало проблемы только на сервере, а не локально. Все мои перенаправления были установлены на 7.0
.
Убедитесь, что развернутое приложение действительно получает правильную версию от NuGet, а не только самую последнюю и самую большую. Или обновите конфигурацию, чтобы указать на самую новую версию.
Недавно я работал над старым проектом. Мне нужно было обновить нашу версию Newtonsoft.Json.dll, так как мне пришлось использовать «новый» API, который требовал новой версии, но у меня все еще были другие DLL, которые требовали старую версию.
bindingRedirect вы говорите? Неа. Он продолжал жаловаться на манифестное несоответствие.
Отдельные теги CodeBase? Неа. Он продолжал жаловаться на манифестное несоответствие.
Проблема заключалась, по-видимому, в том, что у старой версии Newtonsoft.Json.dll (3.0.0.0) не есть PublicKeyToken, но «новая» версия (4.5 .7.1) У нас есть PublicKeyToken. Поэтому они не могли использовать один и тот же зависимый тег-сборщик.
Это то, что у меня получилось:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="" culture="neutral"/>
<codeBase version="3.0.0.0" href="bin\Newtonsoft_Old\Newtonsoft.Json.dll" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<codeBase version="4.5.0.0" href="bin\Newtonsoft.Json.dll" />
</dependentAssembly>
Получил вышеуказанную ошибку: в Visual Studio 2013 для исправления: в пакете mamnager Execute: Install-package newtonsoft.json Это добавит новую строку в packages.config <package id="Newtonsoft.Json" version="6.0.5" targetFramework="net45" />
Удаляет предыдущую строку, которая может указывать на предыдущую версию на packages.config. Удалите каталог старой версии в каталоге packagers. Удалите ссылку NewtonSoft.Json и прочитайте ее, указав на последнюю версию. У корневого webconfig будет следующее <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
, как только все будет сделано. Закройте и откройте визуальную студию. Это должно исправить это. У меня была такая же ошибка при установке PM> install-package durandal.starterkit. Я использовал вышеупомянутый метод для исправления.
Найденное решение, попробуйте:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>