Ответ 1
Во-первых, кредит, в котором должен быть кредит. ОП решила эту проблему и ответила на нее в разделе комментариев вопроса. Однако я понимаю, что многие люди приходят в StackOverflow и будут читать этот вопрос, а не смотреть на комментарии. Поэтому я передаю вышеупомянутый ответ здесь. Обязательно запустите голосование, если это полезно.
Эта проблема возникает из-за того, что учетная запись, связанная с пулом приложений веб-службы в IIS, не имеет права на чтение и запись в папку C:\Windows\Temp
. Я не знаю, почему учетной записи нужен доступ к этой папке, но это так. Из моего случайного наблюдения это похоже на то, что он просто пишет пустой файл со случайным именем в папку Temp
.
Чтобы решить эту проблему, перейдите в папку C:\Windows
и щелкните правой кнопкой мыши папку Temp
. Выберите Свойства, а на вкладке Безопасность добавьте учетную запись, связанную с пулом приложений ваших веб-сервисов. Нажмите кнопку ОК, перейдите в IIS и переработайте пул приложений. Это должно исправить ваш запрос веб-службы.
Стоит отметить, что обстоятельства вокруг этой ошибки могут быть немного обманчивыми. Я столкнулся с этой проблемой пару раз в течение 5 лет. (Я забыл об этом каждый раз.) Причина, по которой это не так заметно, заключается в том, что вы можете опубликовать веб-службу, успешно перейти на связанную страницу asmx
и посмотреть схему своих методов веб-службы. Кроме того, проект Visual Studio может добавить ссылку на веб-службу, а Visual Studio автоматически сгенерирует все связанные классы для веб-службы в вашем проекте VS.
Это создает впечатление, что все работает правильно, пока вы не сделаете свой первый запрос для выполнения метода в веб-службе. Веб-служба не сработает, когда начнет выполнение кода, потому что он хочет получить доступ к каталогу Temp
.
Дополнительную информацию об этой ошибке можно найти в подтвержденном отчете об ошибке на сайте Microsoft.com.