Я нашел то, что искал здесь: http://support.microsoft.com/kb/308001
Похоже, что есть только незначительные изменения кода, которые должны быть реализованы. Надеюсь, что это может помочь кому-то еще.
Редактировать 6/21/19
@ Паразиты спросили, могу ли я найти ссылку, которую я не смог, но я нашел действительно старую кодовую базу с некоторым смущающим кодом, который может, по крайней мере, обеспечить некоторые отправные точки / направления ( надеюсь и для других тоже). Пожалуйста, прости меня, если я не проясняю «почему» за некоторыми из этих предметов (это было некоторое время назад, и я не понимал всего этого до глубины, которую я должен был иметь).
1) Сервисный договор
[ServiceContract] public interface <svcName> ...
{
[OperationContract]
[WebGet(UriTemplate = "/*", BodyStyle = WebMessageBodyStyle.Bare)]
Stream MyGetMethod();
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/*", BodyStyle = WebMessageBodyStyle.Bare)]
Stream MyPostMethod(Stream bodyStream);
2) Я также должен был предоставить картограф содержимого (я не могу вспомнить почему)
public class RawContentTypeMapper : WebContentTypeMapper
{
public override WebContentFormat GetMessageFormatForContentType(string contentType)
{
return WebContentFormat.Raw;
}
}
3) Затем мне нужно было кое-что сделать в web.config ...
<system.serviceModel>
<services>
<service name="<namespace>.<svcName>" behaviorConfiguration="<behaviorName>">
<endpoint address="" binding="customBinding" behaviorConfiguration="<behaviorName>" contract="<namespace>.<svcName>" bindingConfiguration="<customBinding>"/>
</service>
</services>
<bindings>
<customBinding>
<binding name="<customBinding>">
<!-- Used for REST. See http://www.codehosting.net/blog/BlogEngine/post/WebContentFormatRaw-in-your-WCF-config-file.aspx -->
<!-- Provide the fully qualified name of the WebContentTypeMapper, set max message size to 500MB -->
<webMessageEncoding webContentTypeMapperType="<namespace>.RawContentTypeMapper, <namespace>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<httpTransport manualAddressing="true" maxReceivedMessageSize="524288000" transferMode="Buffered" />
</binding>
</customBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="<behaviorName>">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="<behaviorName>">
<webHttp helpEnabled="true"/>
</behavior>
</endpointBehaviors>
</behaviors>
<diagnostics performanceCounters="All"/>
</system.serviceModel>
Я также видел эту ссылку в комментариях к проекту, которая может оказаться полезной: http://www.codehosting.net/blog/BlogEngine/post/WebContentFormatRaw-in-your-WCF-config-file
Вам придется простить меня, если я не смогу действительно объяснить «почему» всего вышеперечисленного. Некоторые из них просты для понимания (отображение методов GET, POST), некоторые из них мне показалось, что я просто что-то пробовал (материал web.config).
В некотором контексте я вспоминаю, что приложение, которое я переносил, имело код для работы со всеми базовыми HTTP-соединениями и тому подобным, и после того, как я перенес его в IIS с использованием вышеизложенного, это было не то, что оно было очень хрупким Мне казалось, что я потерял много контроля, фактически не понимая, как и почему, и необходимость вносить изменения действительно заставляла меня чувствовать, что это хрупко. Это одна из причин, по которой я создал Watson Webserver (бесстыдный плагин) для быстрой сборки серверов RESTful: https://www.nuget.org/packages/Watson/2.0.5