Я пытаюсь установить веб-сервис, написанный другим парнем на .NET. У меня есть базовое понимание IIS. Веб-сервис отлично работает на моем компьютере разработчика, но когда я пытаюсь перенести веб-сервис на рабочий сервер, случаются неприятности.
Веб-сервис находится по адресу C:\inetpub\wwwroot\
на сервере разработки. Но на этом производственном сервере он должен находиться по адресу D:\services\
.
Мне удалось установить приложение на рабочий сервер, и все кажется прекрасным. Но когда я Test Settings
при начальной настройке я получаю Invalid application path
ошибка. Я могу просто закрыть его и по-прежнему установить, но затем, когда я попытаюсь получить доступ к веб-сервису (по адресу http://myserver.com/webservice/GetData
) Ничего не произошло. Просто пустая страница, и когда я проверяю заголовки ответов, есть 500
ошибка.
Я не знаю, что здесь происходит и в чем проблема. Вот файл конфигурации, поэтому кто-то может заметить что-то странное.
РЕДАКТИРОВАТЬ: Конфигурационный файл взят с моего сервера разработки. Я просто скопировал его на свой рабочий сервер ... но это явно не сработало :-)
ОБНОВИТЬ: Я заметил, что мой сервер разработки работает в пуле приложений с Net 4 и в «классическом» «режиме». На производственном сервере это было в NET 4, но в «интегрированном» режиме. Поэтому я изменил его на «классический». У меня все еще остается пустая страница. Но проверка журнала выдаст следующее:
2012-10-03 14:57:00 ip удален GET / boo / GetData - 80 - ip удален Mozilla / 5.0 + (Windows + NT + 6.1; + WOW64; + rv: 15.0) + Gecko / 20100101 + Firefox / 15.0.1 404 2 1260 203
ОБНОВЛЕНИЕ 2: Спасибо, ребята, за вашу помощь. Ваши комментарии помогли в том, что искать. После долгого просмотра журналов и управления правами Я нашел этот Microsoft KB.
После проверки ограничений ISAPI и CGI на уровне сервера я обнаружил, что .NET 4 и .NET 4 64 запрещены. После разрешения обоих, НАКОНЕЦ мой веб-сервис начал говорить.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<identity impersonate="true" />
<!-- Impersonate NT AUTHORITY/IUSR -->
<compilation targetFramework="4.0">
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b7735c561131e089" />
</assemblies>
</compilation>
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<httpErrors existingResponse="PassThrough" />
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
<directoryBrowse enabled="false" />
</system.webServer>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<standardEndpoints>
<webHttpEndpoint>
<!--
Configure the WCF REST service base address via the global.asax.cs file and the default endpoint
via the attributes on the <standardEndpoint> element below
-->
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" />
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
<connectionStrings>
<add name="Entities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=someip;initial catalog=db_90;User ID=user1;Password=access2;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
Это может быть лучший вопрос для stackoverflow.com, но сейчас я попробую.
С точки зрения IIS, если вы можете узнать конкретную ошибку 500, это может дать большую подсказку. Проверьте журналы IIS в c: \ inetpub \ logs \ Logfiles \ w3svc {siteid}. Найдите записи для неудачных тестов, и ближе к концу вы должны увидеть 500 {пробел} {что-то} {пробел} {что-то}. Это у {чего-то} есть дальнейшие подсказки.
Другой тест - создать простой test.aspx в корневой папке сайта и убедиться, что сайт IIS тоже работает нормально.