Подтвердить что ты не робот

Ошибка: не удалось создать временный класс (результат = 1)... При вызове методов на веб-службе

Ошибка: не удалось создать временный класс (результат = 1)... При вызове методов в веб-службе. Я использую VS 2008 С# ASP.NET 3.5. Я обращаюсь к удаленному веб-сервису к моему приложению.

Server Error in '/' Application.
Server was unable to process request. ---> Unable to generate a temporary class (result=1).
error CS2001: Source file 'C:\WINDOWS\TEMP\6sbkwt2d.0.cs' could not be found
error CS2008: No inputs specified
 Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

 Exception Details: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> Unable to generate a temporary class (result=1).
error CS2001: Source file 'C:\WINDOWS\TEMP\6sbkwt2d.0.cs' could not be found
error CS2008: No inputs specified


Source Error: 

Line 775:        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CheckLogin", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
Line 776:        public System.Data.DataSet CheckLogin(string uname, string pswd) {
Line 777:            object[] results = this.Invoke("CheckLogin", new object[] {
Line 778:                        uname,
Line 779:                        pswd});


 Source File:  c:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\14127ae4\96323535\App_WebReferences.u9ldrmk1.0.cs    Line:  777
4b9b3361

Ответ 1

Во-первых, кредит, в котором должен быть кредит. ОП решила эту проблему и ответила на нее в разделе комментариев вопроса. Однако я понимаю, что многие люди приходят в StackOverflow и будут читать этот вопрос, а не смотреть на комментарии. Поэтому я передаю вышеупомянутый ответ здесь. Обязательно запустите голосование, если это полезно.

Эта проблема возникает из-за того, что учетная запись, связанная с пулом приложений веб-службы в IIS, не имеет права на чтение и запись в папку C:\Windows\Temp. Я не знаю, почему учетной записи нужен доступ к этой папке, но это так. Из моего случайного наблюдения это похоже на то, что он просто пишет пустой файл со случайным именем в папку Temp.

Чтобы решить эту проблему, перейдите в папку C:\Windows и щелкните правой кнопкой мыши папку Temp. Выберите Свойства, а на вкладке Безопасность добавьте учетную запись, связанную с пулом приложений ваших веб-сервисов. Нажмите кнопку ОК, перейдите в IIS и переработайте пул приложений. Это должно исправить ваш запрос веб-службы.

Стоит отметить, что обстоятельства вокруг этой ошибки могут быть немного обманчивыми. Я столкнулся с этой проблемой пару раз в течение 5 лет. (Я забыл об этом каждый раз.) Причина, по которой это не так заметно, заключается в том, что вы можете опубликовать веб-службу, успешно перейти на связанную страницу asmx и посмотреть схему своих методов веб-службы. Кроме того, проект Visual Studio может добавить ссылку на веб-службу, а Visual Studio автоматически сгенерирует все связанные классы для веб-службы в вашем проекте VS.

Это создает впечатление, что все работает правильно, пока вы не сделаете свой первый запрос для выполнения метода в веб-службе. Веб-служба не сработает, когда начнет выполнение кода, потому что он хочет получить доступ к каталогу Temp.

Дополнительную информацию об этой ошибке можно найти в подтвержденном отчете об ошибке на сайте Microsoft.com.

Ответ 2

Это происходит, когда ваш веб-сайт не работает с пулом приложений "DefaultAppPool", и вы выбрали свой собственный пул. В этом случае вам нужно добавить пользователя с именем вашего пула.