Я изучаю WCF и у меня есть следующий код, работающий в моей среде разработки с использованием Visual Studio 2008 и его веб-сервера.Когда я публикую веб-службу в IIS 6, все запросы приводят к ошибке 400 «Bad Request».Глядя на журнал IIS, код состояния равен 400, а код состояния win32 - 1380. Используя net helpmsg 1380
, он сообщает, что код состояния wind32 означает « Ошибка входа: пользователю не был предоставлен запрошенный тип входа в систему.на этом компьютере . "Но я использую webHTTPBinding для REST, который не использует метод проверки подлинности или безопасности.
В IIS у меня есть приложение, разрешающее анонимному, который настроен на олицетворение "IUSER_"account. В пуле приложений он настроен на использование идентификатора сетевой службы. Оба пользователя настроены на запись временных папок доступа, а также папок .net framework. Я настроил трассировку WCF, но журналы пустые.Я бьюсь головой о стену. Кто-нибудь может помочь?
System.ServiceModel часть web.config:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="default">
<serviceMetadata />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="default" name="GTKK.ServiceLibrary.GTKKService">
<endpoint address="" behaviorConfiguration="web" binding="webHttpBinding"
bindingConfiguration="" name="web" contract="GTKK.ServiceLibrary.IGTKKService" />
<endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
name="mex" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:1173/GTKKService" />
</baseAddresses>
</host>
</service>
</services>
<diagnostics>
<messageLogging logMalformedMessages="true" logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
Вот мой сервисный контракт:
using GTKK.DTO;
using System.ServiceModel.Web;
namespace GTKK.ServiceLibrary
{
[ServiceContract(SessionMode=SessionMode.Allowed)]
public interface IGTKKService
{
[WebGet(UriTemplate = "artist/{id}/json", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
ArtistDTO GetArtistByID(string id);
[WebGet(UriTemplate = "artists/json?namefilter={namefilter}", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
List<ArtistDTO> GetArtistListByNameFilter(string nameFilter);
[WebGet(UriTemplate = "localevents/json?search={searchText}", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
List<EventDTO> GetLocalEventsBySearchLocationJson(string searchText);
[WebGet(UriTemplate = "localevents/xml?search={searchText}", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Xml)]
[OperationContract]
List<EventDTO> GetLocalEventsBySearchLocationXml(string searchText);
}
}
В браузере я использую следующий URL для тестирования в своей среде разработки с использованием веб-сервера VS2008, и он работает:
http://localhost:1173/GTKKService/localevents/xml?search=98101
После публикации в IIS и использования следующего URL я получаю неверный запросстраница:
http://<host_name>/service.svc/localevents/xml?search=98101
Я знаю, что URL-адрес должен быть правильным, как если бы я вставил неверный URL-адрес после части .svc, я получу ошибку «Не найдена конечная точка», которая работает так, как должнаНапример:
http://<host_name>/service.svc/anythinghere
На сервере IIS установлены .net 2, 3.0 и 3.5. Веб-приложение IIS настроено на использование .net 2 (который будет использовать .net 3.5). I 'мы также запустили serviceModelReg / i / x, как мыКак и / ia, убедитесь, что WCF установлен и зарегистрирован.Что касается страницы с ошибкой «Bad Request», то это то, что это не страница с ошибками IIS, а HTML, отформатированный как страница с ошибками WCF, с темно-синей полосой вверху с белым заголовком « Request Error »,с последующим сообщением " Сервер обнаружил ошибку при обработке запроса. Дополнительные сведения см. в журналах сервера. "
Пожалуйста, помогите.