Вот код для преобразования между JSON и NSData в swift 2.0 (адаптировано из ответа Шуо)
// Convert from NSData to json object
func nsdataToJSON(data: NSData) -> AnyObject? {
do {
return try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers)
} catch let myJSONError {
print(myJSONError)
}
return nil
}
// Convert from JSON to nsdata
func jsonToNSData(json: AnyObject) -> NSData?{
do {
return try NSJSONSerialization.dataWithJSONObject(json, options: NSJSONWritingOptions.PrettyPrinted)
} catch let myJSONError {
print(myJSONError)
}
return nil;
}
Код не должен иметь следующую структуру:
Но следующее:
Обратите внимание на специальную папку App_Code
, которая содержит исходный код.
Подведем итоги:
~/App_Code/FooService.cs
:
using System.ServiceModel;
namespace FooService
{
[ServiceContract]
public class FooService
{
static FooEngine engine = new FooEngine();
[OperationContract]
public string Foo()
{
return "bar";
}
}
public class FooEngine
{
}
}
~/FooService.svc
:
<%@ ServiceHost Language="C#" Debug="true" Service="FooService.FooService" CodeBehind="~/App_Code/FooService.cs" %>
~/Web.config
:
<configuration>
<system.web>
<compilation debug="false" targetFramework="4.0" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
</configuration>
~/Default.aspx
:
<%@ Page Language="C#" %>
<% var foo = "bar"; %>
При этом я рекомендую вам использовать веб-приложения вместо веб-сайтов и предварительно скомпилировать все, чтобы избежать подобных проблем. Другое преимущество заключается в том, что вам больше не нужно развертывать исходный код на сервере.
Если вы используете скомпилированное веб-приложение, ваша структура будет следующей:
Это то, что я бы порекомендовал вам.
У меня была похожая проблема с моим проектом, веб-сайт работал нормально, но все веб-службы svc сталкивались с такой же ошибкой.
Я попытался изменить строку ниже в web.config, но это не помогло
<compilation debug="false" batch="false">
Решение, которое я нашел, было связано с тем, как было построено приложение.
Поскольку я использовал проект развертывания, я обнаружил, что сняв флажок с опции:
Использовать как компонент библиотеки (удалите файл App_Code.compiled)
в Страница «Выходные сборки», а затем перестройка и развертывание проекта, казалось, работали для меня.
Надеюсь, что это помогает кому-то еще.